您的位置:首页 > 其它

NYOJ 题目835

2017-07-15 09:59 176 查看

吉他练习

时间限制:1000 ms  |  内存限制:65535 KB

难度:1

描述
念情最近买了一把吉他,接着开始了他的吉他课程。老师在叫他把532123练习熟练了之后,教给了他三个和弦,C  Am  Em。要求念情按照这个顺序一直练习下去,知道老师认可才教他下一步。

可是念情刚学,经常出错,你需要做的是,判断念情是否有弹错

输入多组测试数据

每组输入一个字符串,仅有C Am Em

字符串长度不超过200输出如果念情没有弹错,则输出"YES"

反之,输出"NO"样例输入
CAmEmCAmEmCAmEmCAmEm
CAmEmCCAmEm
CAmEmCAm

样例输出
YES
NO
YES

提示不一定非要把三个和弦弹完,只要顺序正确就行这道题一开始写的时候认为AmEmCAmEm,或者是EmCAmEm这类的顺序也可以,因为最后提示说“不一定非要把三个和弦弹完,只要顺序正确就可以”,后来发现这句话是指弹完一个完整的节奏后面的调子。思路的话先求出字符串长度,求出除以5的余数及商,然后先5个5个一判断是否符合CAmEm,之后的余数根据顺序一个一个判断字符是否相同即可。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i,j,n,m,Len1,k,t;
char s[300]={0};
while(scanf("%s",s)!=EOF)
{
Len1=strlen(s);
n=Len1/5;
m=Len1%5;
for(i=0,k=0;i<n*5;i=i+5)
{
if((s[i]=='C')&&(s[i+1]=='A')&&(s[i+2]=='m')&&(s[i+3]=='E')&&(s[i+4]=='m'))
k++;
else
break;
}
if(m==0)
{
if(k==n)
printf("YES\n");
else
printf("NO\n");
continue;
}
if(m==1)
{
if((s[i]=='C')&&(k==n))
printf("YES\n");
else
printf("NO\n");
continue;
}
if(m==2)
{
if((s[i]=='C')&&(k==n)&&(s[i+1]=='A'))
printf("YES\n");
else
printf("NO\n");
continue;
}
if(m==3)
{
if((s[i]=='C')&&(k==n)&&(s[i+1]=='A')&&(s[i+2]=='m'))
printf("YES\n");
else
printf("NO\n");
continue;
}
if(m==4)
{
if((s[i]=='C')&&(k==n)&&(s[i+1]=='A')&&(s[i+2]=='m')&&(s[i+3]=='E'))
printf("YES\n");
else
printf("NO\n");
continue;
}
}
return 0;
}


4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: