学习一下大佬写题解练习吧,第一次写
Monocarp 正在参加一个编程竞赛,其中有 26 个问题,从 "A "到 "Z "依次命名。问题按难度排序。此外,已知 Monocarp 能在1 分钟内解决 "A "问题,在 2 分钟内解决 "B "问题,......,在 26 分钟内解决 "Z "问题。
比赛结束后,你发现了他的比赛日志--一个由大写拉丁字母组成的字符串,其中第 i 个字母告诉了莫诺卡普在比赛的第 i 分钟里解决了哪个问题。如果莫诺卡普在某个问题上总共花费了足够的时间,那么他就解决了这个问题。请注意,莫诺卡普在解题后可能还在思考问题。
根据 Monocarp 的比赛日志,计算他在比赛中解决的问题的数量。
这个题最终要计算这个人解决的问题数,好,那我们来看有26个问题,所以可以构建一个字符串A-Z,因为是在一分钟解决'A',2分钟解决'B'依次下去,根据他写的字符串比如ACBCBC可以看出A出现一次,C出现三次,B出现两次,那么现在问题就很好解决了,我们就可以实现代码了
#include <iostream>
#include <string>
using namespace std;
int main() {
int numTests;
cin >> numTests;
// 输入测试用例的数量 for (int t = 0; t < numTests; ++t)
{ int n; cin >> n; // 输入字符串的长度
string s; cin >> s; // 输入字符串内容 int count = 0;
for (int i = 0; i < 26; ++i)
{ char c = 'A' + i;
int charCount = 0;
for (char ch : s)
{ if (ch == c) { ++charCount;
if (charCount >= i + 1)
{ ++count; break; } } } }
cout << count << endl;
// 输出符合条件的字符数量 }
return 0; }