题目描述:
给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0.例如: OOXXOXXOOO 的得分为1+2+0+0+1+0+0+1+1+2+3.
题解:
设置一个数组为输入,另一个数组为每项得分,初始化为0,若遇到O,分数为上一项的分数加1,遇到X,不做处理。
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
int main()
{
int T;
cin>>T;
char a[85];
for(int i=1;i<=T;i++)
{
int score=0;
int j;
int b[85];
memset(b,0,82); //初始化数组为0;
cin>>a;
if(a[0]=='O') //第一项直接判断
b[0]=1;
for(j=1;j<strlen(a);j++) //从第二项开始,若遇到O,则此项为前一项加1;
{
if(a[j]=='O')
b[j]=b[j-1]+1;
}
for(j=0;j<strlen(a);j++)
score+=b[j];
cout<<score<<endl;
}
return 0;
}