C++版 - UVa1585 Score - 题解
《算法竞赛入门经典(第二版)》
习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585)
问题描述:
给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0。例如:OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3。
Sample Input
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
Sample Output
10
9
7
55
30
在线提交:
思路:
扫描当前行的字符串,如果遇到字符’O’就让计数器count增加1,然后将count加入到sum中,如果遇到’X’,则需将count置为0.
已AC代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int numOfLines;
cin >> numOfLines;
if (numOfLines <= 0)
return 0;
while (numOfLines--)
{
string s;
cin >> s;
int sum = 0;
int count = 0;
int len = s.size();
for (size_t i = 0; i < len; i++)
{
if (s[i] == 'O')
{
count++;
sum += count;
}
else
count = 0;
}
cout << sum << endl;
}
return 0;
}
Runnig result:
21951689 | 1585 | Score | Accepted | C++11 | 0.000 | 2018-09-13 06:18:15 |