美的笔试 美的笔试题 0316
笔试时间:2025年03月16日
历史笔试传送门:
第一题
题目
简单数字游戏,输入给定一个字符串,每个字母代表不同的分数,只包含'P'、'G'、'M',要求求出此做该游戏的分数。 'P'表示Prefect,可以得10分,当连续得到3个'P'后,紧挨着的'P'得分为15分;'G'表示Great,你可以得分5分;'M'表示 Miss,'M'不得分,当字符串中出现3个'M'时,游戏结束。
输入描述
输入为一个字符串,为string类型。
输出描述
输出为做该游戏可得的分数,为int类型。
样例输入
'PPPPPP'
样例输出
75
参考题解
模拟题,直接根据题意进行判断即可。(分别设置两个常量用来统计当前 P 和 M 出现次数)
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.length();
int sum = 0;
int numP = 0; // 连续的 P 计数
int numM = 0; // 累计 M 次数
for (int i = 0; i < n; i++) {
char c = s[i];
if (c == 'P') {
numP++;
if (numP > 3) {
sum += 15;
} else {
sum += 10;
}
} else if (c == 'G') {
sum += 5;
numP = 0; // 遇到 G 就重置连续 P 计数
} else {
numM++;
numP = 0;
if (numM == 3) break; // 连续出现 3 个 M 则中断
}
}
cout << sum << endl;
return 0;
}
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
int n = s.length();
int sum = 0;
int numP = 0;
int numM = 0;
for(int i = 0; i < n; i++){
char c = s.charAt(i);
if(c == 'P'){
numP++;
if(numP > 3){
sum += 15;
}else{
sum += 10;
}
}else if(c == 'G'){
sum += 5;
numP = 0;
}else {
numM++;
numP = 0;
if(numM == 3) break;
}
}
System.out.println(sum);
}
}
Python:[此代码未进行大量数据的测试,仅供参考]
s = input().strip()
n = len(s)
sum_score = 0
numP = 0 # 连续出现 P 的次数
numM = 0 # 累计 M 的次数
for c in s:
if c == 'P':
numP += 1
if numP > 3:
sum_score += 15
else:
sum_score += 10
elif c == 'G':
sum_score += 5
numP = 0
else:
numM += 1
numP = 0
if numM == 3:
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2025 春招笔试合集 文章被收录于专栏
2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南
查看7道真题和解析