UVa1585

来源:互联网 发布:端口多路复用方式 编辑:程序博客网 时间:2024/05/28 15:32

该题需要按照连续的'O'来统计得分,那么只需要设一个得分数组score[],存储每个字符对应的分数。在循环中将数组中的数值得分相对于前一个值+1 score[i] = score[i-1]+1,如果遇到字符'X'直接将该位置的得分置0即可。

这里需要注意的是对于score数组的第一个值的初始化,通过判断str数组的第一个字符然后初始化一下就行了。


#include<stdio.h>#include<string.h>#define maxn 80+5int main(){int T, score[maxn];char str[maxn];scanf("%d", &T);while(T--){scanf("%s", str);//初始化需要判断第一个字符 score[0] = (str[0] == 'O') ? 1 : 0;for(int i = 1; i < strlen(str); i++){score[i] = score[i-1] + 1;// 如果遇到 X 则更新 score[i] 为 0 if(str[i] == 'X')score[i] = 0;}int sum = 0;for(int i = 0; i < strlen(str); i++)sum += score[i];printf("%d\n", sum);}return 0;}


0 0