- 题目描述:
-
对给定的字符串(只包含'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
只要满足a*b==c&&b!=0就好
但是有一些小细节,
1.z要在j的前面
2.z和j的个数必须为1
3.出现除了zoj三个以外的字符要处理
代码也不想修改了,将就看吧
#include<iostream> #include<queue> #include<cstdio> #include<cstring> using namespace std; int main(){ char s[1000+10]; while(cin>>s){ int a=0,b=0,c=0; int z=0,o=0,j=0,fz_z=0,q=0,fz_j=0; for(int i=0;i<strlen(s);i++){ if(!(s[i]=='z'||s[i]=='o'||s[i]=='j')) q=1; if(s[i]=='z') a=i,z++,fz_z=i; if(s[i]=='j'){ b=i-fz_z-1; fz_j=i; j++; c=strlen(s)-i-1; } } if(q){ cout<<"Wrong Answer"<<endl; continue; } if(z>1||j>1||z==0||j==0){ cout<<"Wrong Answer"<<endl; } else{ if(a*b==c&&b!=0&&fz_j>fz_z) cout<<"Accepted"<<endl; else cout<<"Wrong Answer"<<endl; } } return 0; }