码迷,mamicode.com
首页 > 其他好文 > 详细

杭电ACM1039——Easier Done Than Said?

时间:2015-05-03 10:38:32      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:acm   杭电   

这一题,简单的字符串处理。只是题目的要求比较麻烦。

题目的大概意思是:给你一段字符串,判断是否可以被接受。

判断的条件为:

1.存在一个元音。(元音有a,e,i,o,u)

2.不能有连续的三个元音或者连续的三个非元音。

3.不能有连续的两个相同字符除了e和o可以之外

有了这些条件,就很容易了。

下面的是一次AC的代码,有详细的注释:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
	char str[25];
	int tag[25], flag[25];           //tag数组是来判断是否有三个元音连续和非元音连续,flag数组判是否有两个相同字符连续
	while(cin >> str)
	{
		if(strcmp(str, "end") == 0)   //结束标记
			break;
		int len = strlen(str);
		memset(tag, 0, sizeof(tag));   //初始化两个数组
		memset(flag, 0, sizeof(flag));
		for(int i = 0; i < len; i++)
		{
			if(str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u')
			{
				tag[i] = 1;                   //是元音,标记该位置为1;
				if(i > 0 && (str[i - 1] == 'a' || str[i - 1] == 'e' || str[i - 1] == 'i' 
					|| str[i - 1] == 'o' || str[i - 1] == 'u'))  //如果它的上一个位置为1,相加起来
				{                                                //最后判断是否有3出现,就可以知道是否有3个元音连续
					tag[i] += tag[i - 1];
				}
			}
			else                               //同理,非元音也是,只是是判-3而已
			{
				tag[i] = -1;
				if(i > 0 && !(str[i - 1] == 'a' || str[i - 1] == 'e' || str[i - 1] == 'i' 
					|| str[i - 1] == 'o' || str[i - 1] == 'u'))
				{
					tag[i] += tag[i - 1];
				}
			}
			if(i > 0 && str[i] == str[i - 1] && (str[i] != 'e' && str[i] != 'o')) //判是否有两个相同的连续
				flag[i] = 1;
		}
		int a, b, c, d;
		a = b = c = d = 0;
		for(int j = 0; j < len; j++)
		{
			if(tag[j] == 1)           //判是否存在元音
				a = 1;
			if(tag[j] == 3)           //判是否存在三个元音连续
				b = 1;
			if(tag[j] == -3)          //判是否存在三个非元音连续
				c = 1;
			if(flag[j] == 1)          //判是否存在两个相同的字符连续,除e和o的
				d = 1;
		}
		if(a == 1 && b == 0 && c == 0 && d == 0)
			cout << '<' << str << '>' << " is acceptable." << endl;
		else
			cout << '<' << str << '>' << " is not acceptable." << endl;
	}
	return 0;
}


杭电ACM1039——Easier Done Than Said?

标签:acm   杭电   

原文地址:http://blog.csdn.net/qq_25425023/article/details/45457141

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!