题目描述&分析
习题3-1 得分(Score, ACM/ICPC Seoul 2005, UVa1585)
给出一个由O和X组成的串(长度为1~80),统计得分。
每个O的得分为目前连续出现 的O的个数,X的得分为0。
例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3。
英文题目描述
**
**
代码注释
#include <iostream>
#include <cstring> // 调用 strlen 函数
using namespace std;
const int maxn = 128;
int main() {
int T;
char buf[maxn];
cin >> T;
getchar();
while(T--) {
// 这里用到了 cin 中的 getline 方法
// 参数为 目标数组 buf,和 该数组的长度 maxn
// 它会将输入信息 输入到 buf 中
cin.getline(buf, maxn);
// 下面一行为个人测试使用,可删除
// cout << buf << endl;
// cnt 为 O 的 “分值”
// 连续情况下, O 的 “分值” 会自增
int cnt = 0, sum = 0, len = strlen(buf);
for(int i = 0; i < len; i++) {
// 满足条件,cnt 先自增一下,
// 然后 加入到 sum 中
if(buf[i] == 'O') sum += (++cnt);
// 如果不是 O 字符,就需要重置 cnt 为 0
else cnt = 0;
}
cout << sum << endl;
}
return 0;
}
基本功不行
编程语言不熟练,勤加练习 C++……