题目大意:给出一个由O和X组成的串(长度为1-80),统计得分。
每个O的分数为目前连续出现的O的个数,例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3
解题思路:用一个变量term记录当前O的分数,若出现O,则term+1,若出现X,则term=0;
再用一个sum记录总和,没次加上term即可
/* UVa 1585 Score --- 水题 */ #include <cstdio> #include <cstring> const int maxn = 85; int main() { int t; char s[maxn]; scanf("%d", &t); while (t--){ scanf("%s", s); int n = strlen(s); int flag = 0, sum = 0; for (int i = 0; i < n; ++i){ //落连续出现,次O分数+1 if (s[i] == ‘O‘){ ++flag; } else{ flag = 0; } sum += flag; //更新总和 } printf("%d\n", sum); } return 0; }
时间: 2024-09-30 09:22:54