ZOJ问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4909 Accepted Submission(s): 1510
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
zoj ozojo ozoojoo oozoojoooo zooj ozojo oooozojo zojoooo
Sample Output
Accepted Accepted Accepted Accepted Accepted Accepted Wrong Answer Wrong Answer
Source
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 40
char str[1010];
int main()
{
int n,m;
int i,j;
int signa,signb;
while(scanf("%s",str)!=EOF)
{
int cnt1=0;
int cnt2=0;
int cnt3=0;
int flag=1;
if(strcmp(str,"zoj")==0)
{
printf("Accepted\n");
}
else
{
int len=strlen(str);
char* p;
char* t;
char* q;
if(strchr(str,'z')) p=strchr(str,'z');//在调用函数strchr之前,先要确保查找的字符是存在的,否则会造成数组越界
else{
printf("Wrong Answer\n");
continue;
}
if(strchr(str,'j')) q=strchr(str,'j');//在调用函数strchr之前,先要确保查找的字符是存在的,否则会造成数组越界
else{
printf("Wrong Answer\n");
continue;
}
t=p+1;
while(t!=q)
{
if(*t=='o')
{
cnt3++;
t++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
while(p!=str)
{
p--;
if(*p=='o')
{
cnt1++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
q++;
while(*q!='\0')
{
if(*q=='o')
{
q++;
cnt2++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
if(cnt3>=1&&cnt1*cnt3==cnt2)
{
printf("Accepted\n");
continue;
}
else
{
printf("Wrong Answer\n");
continue;
}
}
}
}
printf("Wrong Answer\n");
}
}
return 0;
}