《算法竞赛入门经典(第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;
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;
}