hdu 1039 题目 Easier Done Than Said? (字符串中字符n多条件)

点击打开链接

#include<stdio.h>
#include<string.h>

char s[55];
bool isvol(char c){
	if(c=='a' || c=='e' || c=='i' || c=='o' || c=='u') return 1;
	return 0;
}
bool is2(int i,int j) {
	if(s[i]==s[j] && !((s[i]=='e'&&s[j]=='e')||(s[i]=='o' && s[j]=='o'))) return 1;
	return 0;
}
int main()
{
	int f1,f2,f3,i,len;
	bool vol[55];
	while(~scanf("%s",s)){
		if(!strcmp(s,"end"))break;
		memset(vol,0,sizeof(vol));
		f1=0;f2=f3=1;
		len = strlen(s);
		if(isvol(s[0]))  {				//判断第一个字符 
			vol[0] = f1=1;
			if(len==1) f2=f3=1;						//只有一个字母 
		}
		if(len>=2  )  {
			if(len==2) f2=1; 						//只有2个字符,不可能3个连续元音或辅音 
			if(isvol(s[1])){ vol[1] = f1 =1;	}   //判断第二个字符 
			if(is2(1,0)) f3=0;
		}
		
		for(i=2;i<len;i++){
			if(isvol(s[i])) { vol[i]=1;  f1=1;	}
			if(is2(i,i-1))  { f3=0;  	break;	}  //连续两个相同 
			if( (vol[i-1]&&vol[i-2]&&vol[i])
			 ||(!vol[i-1]&&!vol[i-2]&&!vol[i]) ) {// 连续3个元音或辅音 
				f2=0;	break;
			}
		}

		if(f1&&f2&&f3) printf("<%s> is acceptable.\n",s);
		else  printf("<%s> is not acceptable.\n",s);
		
		
	}
	return 0;
} 




你可能感兴趣的:(hdu 1039 题目 Easier Done Than Said? (字符串中字符n多条件))