HDU 3788 zoj问题
ZOJ问题
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'或者为空;
是否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
zoj
ozojo
ozoojoo
oozoojoooo
zooj
ozojo
oooozojo
zojoooo
Sample Output
Accepted
Accepted
Accepted
Accepted
Accepted
Accepted
Wrong Answer
Wrong Answer
就是前面的o的个数乘以中间o的个数等于后面o的个数,并保证o的个数不为0且"z","j"的个数只有一个.
代码:
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 5 int main() 6 { 7 char s[1005]; 8 int i,j; 9 int count1,count2,count3; 10 while(scanf("%s",s)!=EOF) 11 { 12 count3=count1=count2=0; 13 int len=strlen(s); 14 for(i=0;i<len;i++) 15 if(s[i]=='z')count1++; 16 else if(s[i]=='j')count2++; 17 else count3++; 18 if(count1!=1||count2!=1||count3==0) 19 { 20 printf("Wrong Answer\n"); 21 continue; 22 } 23 for(i=0;i<len;i++) 24 if(s[i]=='z')break; 25 for(j=len-1;j>=0;j--) 26 if(s[j]=='j')break; 27 if(i*(j-i-1)==len-j-1) 28 printf("Accepted\n"); 29 else 30 printf("Wrong Answer\n"); 31 } 32 return 0; 33 }