这是我在算法竞赛一书中的习题,我感觉对我来说比较有教训,所以发到这里,有需要的或者有问题的话可以随时私聊我
题目如下
给出一个由O和X组成的串,长度在1-80,统计得分,每个O的得分数为目前连续出现的O的个数,X的得分为0.例如OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3=10
样例输入
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
样例输出
10
9
7
55
30
源码如下
#include<stdio.h>
#include<string.h>
#define maxn 100
char a[maxn];
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
int sum=0,x=0;
for(int i=0;i<strlen(a);i++)
{
if(a[i]=='O') x+=1;
else x=0;
sum+=x;
}
printf("%d\n",sum);
}
return 0;
}
还是要记住变量如果有变化过程的话,只要进行一次变化,就要清除它之前的一个值