算法竞赛入门经典(第二版) | 习题3-1 得分 (UVa1585,Score)

题意概述

给出一个由O和X组成的串,统计得分,O得分为目前连续出现的O的个数,X的得分为0。
如:OOXXOXXOOO得分为:1+2+0+0+1+0+0+1+2+3=10

Sample Input

5 OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

Sample Output

10
97
55
30

提交链接→UVa1585

没使用过的同学请猛戳这里→vJudge教程

分析:

1、这种水题千万不要想得太复杂,用最简单的知识就可以AC。复杂的语法反到易错而臃肿
2、这个题只需要输入n,然后循环重复n次,结束。 不需要用ACM的格式。 下面是AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#define Max 85 

using namespace std ;

int main()
{
	int n ;
	cin >> n ;
	while(n--) {
		int num = 1 ;			//目前连续出现O的个数 
		int sum = 0 ;  			//累加和
		char a[Max] ;			//存放字符串的数组
		cin >> a ;				//输入字符串
		int len = strlen(a) ;	//求出字符串长度,保存在len
		for(int i = 0; i < len; i++) {
			while(a[i] == 'O') {
				sum += num++ ; i++ ;
			}
			if(a[i] == 'X') num = 1 ;
		}
		cout << sum << endl ; 	 
	} 
	return 0 ;
}
发布了27 篇原创文章 · 获赞 16 · 访问量 1950

猜你喜欢

转载自blog.csdn.net/weixin_43899069/article/details/104293246
今日推荐