一.题目描述:
对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。
是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
输入:
输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,字符串长度小于等于1000。
输出:
对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
样例输入:
zoj
ozojo
ozoojoo
oozoojoooo
zooj
ozojo
oooozojo
zojoooo
样例输出:
Accepted
Accepted
Accepted
Accepted
Accepted
Accepted
Wrong Answer
Wrong Answer
二.题目分析
经过题中条件的综合分析,我们可以得到AC的条件是Na*Nb=Nc,同时应该注意Nb>0这个条件,因为zj是WA的。
深深被这道题所折磨,在九度上一直处于各种WA中,虽然代码在HDU上AC了,一直找呀找呀,好吧,原来是输入方法错了,将while(gets(str))换成while(scanf("%s",str)!=EOF)就可以了,简直哭晕,这是什么鬼,希望看到的各位高手可以解答一下区别,一直以为二者是相等的....
三.代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 1002 int main() { int i,start,end,mid; char str[MAX]; freopen("1006.txt","r",stdin); while(scanf("%s",str)!=EOF) { start=0; mid=0; end=0; i=0; while(str[i]=='o') { start++; i++; } if(str[i]!='z') { printf("Wrong Answer\n"); continue; } i++; while(str[i]=='o') { mid++; i++; } if(str[i]!='j') { printf("Wrong Answer\n"); continue; } i++; while(str[i]=='o') { end++; i++; } if(str[i]!='\0') { printf("Wrong Answer\n"); continue; } if(end==start*mid&&mid>0) printf("Accepted\n"); else printf("Wrong Answer\n"); } return 0; }