题目意思:
给出一个长度在80以内的字符串,统计分数。分数的统计规则:如果这题是O,这题得分为的连续出现次数个
也就是说,连续对的话,后面是前一题的分的+1,如果是第一个,就是1,没错,递增得分。
可以用前缀和去做,初始化全为0,value[i]=value[i-1]+1,用一个变量记录总的分。
#include <cstdio>
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int cas,i,j,n,len,m,w,sum;
char str[85];
int ans[85];
cin>>cas;
for(w=1;w<=cas;w++)
{
sum=0;
cin>>str;
memset(ans,0,sizeof(ans));
len=strlen(str);
if(str[0]=='O')
{
ans[0]=1;
sum=1;
}
for(i=1;i<len;i++)
{
if(str[i]=='O')
{
ans[i]=ans[i-1]+1;
sum+=ans[i];
}
}
cout<<sum<<endl;
}
return 0;
}