【 OJ 】 HDOJ1039 18年11月17日19:40 [ 36 ]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QingCoffe/article/details/84191918

ummm.....这题也是泡泡水题....判断有点烦

AC代码:

# include<iostream>
# include <string>
using namespace std;
char v[5] = { 'a', 'e', 'i', 'o', 'u' };// 元音'a', 'e', 'i', 'o', and 'u';
//规则 1 至少一个元音  2 不能出现连续3个元音3个辅音 4 不能出现2个连续的相同字母 除了 ee oo
void out(string &str, bool isok) {
	if (isok) {
		cout << "<" << str << ">" << " is acceptable." << endl;
	}
	else {
		cout << "<" << str << ">" << " is not acceptable." << endl;
	}
}
bool IsOk(string&str) {
	bool vv=false;
	int vn, cn, cl;
	char pre='1';
	int i,j;
	bool isv;
	vn = cn = 0;
	for (i = 0; i < str.length(); ++i) {
		isv = false;
		if (str[i] == pre) {//查连续的
			if (str[i] == 'e' || str[i] == 'o') //ee oo 合法
				;//do nothing
			else
				return false;
		}
		for (j = 0; j < 5; ++j) {
			if (str[i] == v[j])
			{
				vv = true;//判全局
				isv = true;//判当前数是否为元音
				cn = 0;//辅音个数重置
				vv++;
				vn++;
				if (vn == 3)
					return false;
				break;
			}
		}
		if (!isv) {//是辅音
			vn = 0;//元音个数重置
			cn++;
			if (cn == 3) {
				return false;
			}
		}
		pre = str[i];
	}
	if (vv)
		return true;
	else
		return false;
}
int main(void) {
	string letter;
	cin >> letter;
	while (strcmp(letter.c_str(),"end")) {
		out(letter, IsOk(letter));
		cin >> letter;
	}
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/QingCoffe/article/details/84191918