QAQ的字符串
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
一天,QAQ 得到了一种只包含大小写字母,且满足元音字母 ('A a', 'E e', 'I i', 'O o', 'U u') 和辅音字母(非元音字母)交替出现的字符串。被这种优美的性质所迷倒的 QAQ 决定将这类字符串命名为「厉害了我的金桔串」。
现在,QAQ 得到了一堆字符串,他想知道有哪些字符串是「厉害了我的金桔串」。
Input
输入数据有多组(数据组数不超过 100),到 EOF 结束。
每组输入为一行,包含一个字符串(字符串中只含有大小写英文字母,长度大于 1 且不超过 15)。
Output
对于每组输入,如果这个字符串是「厉害了我的金桔串」,则在一行中输出 "Yes",否则输出 "No"(不包括引号)。
Example Input
QAQ United rehabilitative abc
Example Output
Yes Yes Yes No
Hint
Author
「2016级ACM集训队第一次选拔赛」bLue
着重理解标记变量
#include <stdio.h>
int Judge(char ch) /// 判断是否为元音字母
{
if(ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u')
return 1;
else return 0;
}
int main()
{
char s[1001];
while(~ scanf("%s", s))
{
int i;
for(i=0; s[i]; ++i) /// 全部转小写
{
if(s[i]>='A' && s[i]<='Z')
s[i] += 32;
}
int ok = 1; /// 默认为是金桔串
int last, type; /// last 为上一个字符的字母类型,type 为当前的类型
if(Judge(s[0])) last = 0; /// 预处理第一个字符,为元音
else last = 1; ///辅音
for( i=1; s[i]; ++i)
{
if(Judge(s[i])) type = 0; ///判断第二个,前后关系
else type = 1;
if(last != type) last = type; /// 如果两次不同,则更新 last , 第一组过关
else /// 否则直接跳出
{
ok=0; ///只有元音和辅音两种
break;
}
}
if(ok) printf("Yes\n");
else printf("No\n");
}
return 0;
}
///aabb qaq aqa qaqq a q
#include <stdio.h>
int Judge(char ch) /// 判断是否为元音字母
{
if(ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u')
return 1;
else return 0;
}
int main()
{
char s[1001];
while(~ scanf("%s", s))
{
int i;
for(i=0; s[i]; ++i) /// 全部转小写
{
if(s[i]>='A' && s[i]<='Z')
s[i] += 32;
}
int ok = 1; /// 默认为是金桔串
int last, type; /// last 为上一个字符的字母类型,type 为当前的类型
if(Judge(s[0])) last = 0; /// 预处理第一个字符,为元音
else last = 1; ///辅音
for( i=1; s[i]; ++i)
{
if(Judge(s[i])) type = 0; ///判断第二个,前后关系
else type = 1;
if(last != type) last = type; /// 如果两次不同,则更新 last , 第一组过关
else /// 否则直接跳出
{
ok=0; ///只有元音和辅音两种
break;
}
}
if(ok) printf("Yes\n");
else printf("No\n");
}
return 0;
}
///aabb qaq aqa qaqq a q