ZOJ问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2984 Accepted Submission(s): 906
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
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2984 Accepted Submission(s): 906
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
浙大计算机研究生复试上机考试-2010年
HDU 3788
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
问题分析:
满足条件二:只需要在z和j之间出现一个o即可;
满足条件三:假设满足条件二:oozojoo,带入条件三a=oo,b=o,c=oo,按照条件三执行一次,则变为oozoojoooo,继续执行一次可以得到oozooojoooooo,可以看出按照条件三每递推一次,b中o的个数加1,c中增加的o的个数为a中o的个数,得到递推关系式:
a中o的个数=x中o的个数;
只要c中o的个数=b中o的个数*a中o的个数得到答案:Accepted;
/*View Code
Problem : 3788 ( ZOJ问题 ) Judge Status : Accepted
RunId : 12763697 Language : C++ Author : GrantYuan
Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstring>
using namespace std;
char s[1005];
int pz,pj,numa,numb,numc;
int main()
{
// freopen("1in.txt","r",stdin);
memset(s,0,sizeof(s));
while(~scanf("%s",s)){
int l=strlen(s);
for(int i=0;i<l;i++)
{
if(s[i]=='z') pz=i+1;
if(s[i]=='j') pj=i+1;
}
numa=pz-1;numb=pj-pz-1;numc=l-pj;
if(numc==numa*numb&&pj-pz>1) printf("Accepted\n");
else printf("Wrong Answer\n");
memset(s,0,sizeof(s));
}
return 0;
}