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 循环