《算法竞赛入门经典(第2版)》习题3-1 得分 (Score, ACM/ICPC Seoul 2005, UVa1585)
给出一个由O和X组成的串(长度为1-80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0。例如:OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3。
分析
设置两个累加值n和sum,分别用于累计当前的字母’O’应得的分数,以及累计总分。
遍历串的每一个字符,若等于’O’,则分别累加n和sum,若不为’O’(即X),则将n置0即可。
代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
int main()
{
int i, j, n=0, sum=0; // n表示当前的'O'应增加的得分,sum累计总分
char s[100];
scanf("%s", s);
for(i=0; i<strlen(s); i++)
{
if(s[i]=='O') sum += (++n);
else n=0;
}
printf("%d\n", sum);
return 0;
}