标签:
ZOJ问题浙大计算机研究生复试上机考试-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; }
标签:
原文地址:http://blog.csdn.net/yuanchang_best/article/details/43015699