刘汝佳《算法竞赛入门经典(第二版)》第三章习题(一)
习题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。
解析
因为X的得分为0,所以只需要统计O的得分,另外需要注意的是每次遇到X,统计O得分的变量都要置0。
#include <iostream>
#include <cstdio>
using namespace std;
int main (void)
{
string s;
cin >> s;
int onum = 0,sum = 0;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == 'O')
{
onum++;
sum += onum;
}
else if (s[i] == 'X')
onum = 0;
}
cout << sum << endl;
return 0;
}