hdu 3788 ZOJ问题 (字符串)

来源:互联网 发布:linux安装codeblocks 编辑:程序博客网 时间:2024/05/20 07:54

ZOJ问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2881    Accepted Submission(s): 866


Problem Description
对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。

是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
 

Input
输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,字符串长度小于等于1000;
 

Output
对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
 

Sample Input
zojozojoozoojoooozoojoooozoojozojooooozojozojoooo
 

Sample Output
AcceptedAcceptedAcceptedAcceptedAcceptedAcceptedWrong AnswerWrong Answer
 

Source
浙大计算机研究生复试上机考试-2010年  
很水的一道题,我愣是wa了八次。
很坑的题意:
显示需要考虑zj这种情况,然后需要判定只有一个z还有j实际上也是自己的马虎了!加油加油! 提上的意思就是zj 将原字符串,分成三个部分a,b,c,并且有a*b==c满足条件就AC,不满足条件就会WA。当然也可以用直接题上的条件!
代码如下:
#include<stdio.h>#include<string.h>char a[1010];int main(){int count1,count2,count3;while(~scanf("%s",a)){count1=count2=count3=0;int i,len=strlen(a);int flag=0;int cnt=0;for(i=0;i<len;++i){if(flag==0){if(a[i]=='o'){count1++;continue;}else if(a[i]=='z'){flag++;continue;}else if(a[i]=='j'){cnt=1;break;}}if(flag==1){if(a[i]=='o'){count2++;continue;}else if(a[i]=='j'){flag++;continue;}else if(a[i]=='z'){cnt=1;break;}}if(flag==2){if(a[i]=='o'){count3++;continue;}else if(a[i]!='o'){cnt=1;break;}}}if(!cnt){if(flag==2&&count1*count2==count3&&count2)printf("Accepted\n");elseprintf("Wrong Answer\n");}else printf("Wrong Answer\n");}return 0;} 



0 0