ZOJ问题
程序员文章站
2022-03-19 23:29:56
...
题目描述
对给定的字符串(只包含'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”。
示例1
输入
zoj ozojo ozoojoo oozoojoooo zooj ozojo oooozojo zojoooo
输出
Accepted Accepted Accepted Accepted Accepted Accepted Wrong Answer Wrong Answer
题目分析:首先,条件2为xzojx,条件3为azbjc能ac的话,azbojac也能够ac。事实上,azbjc能ac是建立在xzojx的条件上的
总结来说,前面的o的个数乘以中间o的个数等于后面o的个数,并保证o的个数不为0且"z","j"的个数只有一个(每z和j之间增加一个o,则增加a的个数的o)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int flag,m,i,b,a,c;
char s[1001];
while(scanf("%s",s)!=EOF){
m=strlen(s);
a=b=c=0;
flag=1;
i=0;
while(s[i]!='z'&&s[i]=='o'){
a++;
i++;
}
if(s[i]!='z')
flag=0;
i++;
while(s[i]!='j'&&s[i]=='o'){
b++;
i++;
}
if(s[i]!='j'||b==0)
flag=0;
i++;
while(s[i]=='o'){
c++;
i++;
}
if(s[i]!='\0')
flag=0;
if(flag&&c==a*b)
printf("Accepted\n");
else
printf("Wrong Answer\n");
}
return 0;
}