T1 统计得分
内存限制: 256 Mb时间限制: 1000 ms
题目描述
在一场知识竞赛中,选手答对一题得 11 分,答错不得分且要倒扣 11 分,但扣分不能让分数小于 00。
给定一个由 Y 及 N 构成的字符序列,答对记为 Y,答错记为 N。
选手一开始从 00 分开始,请输出选手最后的得分。
输入格式
- 单个字符序列:保证仅由字母
Y及N组成。
输出格式
- 单个整数,表示最终得分。
数据范围
设 �n 表示字符序列的长度,1≤n≤100,000。
样例数据
输入:
YNNYYY
输出:
3
解析
这个问题相对简单,只需要遍历输入的字符序列,并根据字符是 'Y' 还是 'N' 来更新得分。每次答对('Y')得 1 分,答错('N')扣 1 分,但得分不能小于 0。
以下是使用 C++ 实现的代码:
#include <iostream>
#include <string>
int main() {
std::string sequence;
std::cin >> sequence;
int score = 0;
for (char c : sequence) {
if (c == 'Y') {
++score;
} else if (c == 'N') {
--score;
if (score < 0) {
score = 0; // 防止得分小于0
}
}
}
std::cout << score << std::endl;
return 0;
}
以下是对提供的 C++ 代码逻辑的详细解释:
该代码的主要目的是计算一个由 'Y' 和 'N' 组成的字符序列所代表的得分。在这个场景中,'Y' 表示答对一题,得 1 分;'N' 表示答错一题,扣 1 分,但得分不能小于 0。
代码逻辑如下:
-
输入读取:
- 使用
std::cin >> sequence;从标准输入读取一个字符串sequence。这个字符串仅由 'Y' 和 'N' 组成,代表选手的答题情况。
- 使用
-
初始化得分:
- 声明一个整数变量
score并初始化为 0。这个变量将用于跟踪选手的当前得分。
- 声明一个整数变量
-
遍历字符序列:
- 使用范围 for 循环
for (char c : sequence)遍历字符串sequence中的每个字符c。 - 在循环体内,根据字符
c的值更新得分:
- 使用范围 for 循环

最低0.47元/天 解锁文章
307

被折叠的 条评论
为什么被折叠?



