题意概述
给出一个由O和X组成的串,统计得分,O得分为目前连续出现的O的个数,X的得分为0。
如:OOXXOXXOOO得分为:1+2+0+0+1+0+0+1+2+3=10
Sample Input
5 OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
Sample Output
10
97
55
30
提交链接→UVa1585
没使用过的同学请猛戳这里→vJudge教程
分析:
1、这种水题千万不要想得太复杂,用最简单的知识就可以AC。复杂的语法反到易错而臃肿。
2、这个题只需要输入n,然后循环重复n次,结束。 不需要用ACM的格式。 下面是AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#define Max 85
using namespace std ;
int main()
{
int n ;
cin >> n ;
while(n--) {
int num = 1 ; //目前连续出现O的个数
int sum = 0 ; //累加和
char a[Max] ; //存放字符串的数组
cin >> a ; //输入字符串
int len = strlen(a) ; //求出字符串长度,保存在len
for(int i = 0; i < len; i++) {
while(a[i] == 'O') {
sum += num++ ; i++ ;
}
if(a[i] == 'X') num = 1 ;
}
cout << sum << endl ;
}
return 0 ;
}