-
题目:给出一个由O和 X组成的串(长度为1-80),最多有十个串,统计得分。每个O的得分为目前连续出现的O的个数,X 的得分为0;
-
样例输入:
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
-
样例输出:
10
9
7
55
30
代码1
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
int sum[80] = { 0 };
for (int m = 0; m <= n; m++) {
char str[80] = { '\0' }; //存储原始串
char c;
int i = 0;
while ((c = cin.get()) != '\n') { //逐个读取字符直到遇到回车符
str[i++] = c;
}
int a[80];
if (str[0] == 'X')
a[0] = 0;
else
a[0] = 1;
for (int j = 1; j < i; j++) {
if (str[j] == 'X')
a[j] = 0;
else if (str[j] == 'O' && str[j - 1] == 'X')
a[j] = 1;
else if (str[j] == 'O' && str[j - 1] == 'O')
a[j] = a[j - 1] + 1;
}
for (int j = 0; j < i; j++)
sum[m] += a[j];
}
for (int i = 1; i <= n; i++)
cout << sum[i] << endl;
return 0;
}
有关字符串的读取可参考:https://blog.csdn.net/ahzz123/article/details/70495617
代码2
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char str[111];
int n, sum[100] = { 0 }, i, len, t;
cin >> n;
int m = n;
int j = 0;
while (n--){
sum[j] = 0;
cin >> str;
len = strlen(str);
int t=1;
for (i = 0; i < len; i++){
if (str[i] == 'O'){
sum[j] += t;
t++;
}
else if (str[i] == 'X')
t = 1;
}
j++;
}
for (int k = 0; k < m; k++)
cout << sum[k] << endl;
return 0;
}