找规律的题目
先分析能AC的条件
1.ZOJ能AC 这个很简单
2.xzojx能AC 也就是z前的与j后个数相同 之间有1个
3.若azbjc 能AC,则azbojac也能AC
第三个有一个若字
也就是说azbojac能AC是有前提条件的
也就是满足这种形式的可以一步步推出来
分析条件
满足3AC则必有初始时 a=c b=1
然后每一次可以递归得出
三个o的个数
a 2 a+c
a 3 2a+c
……
因为前提条件a=c
所以
三个个数需要满足
a b b*a
也就是个数Z前与ZJ之间的乘积要与J后的相等
所以可以排除其它完全不可能的
(zj中间一个o没有 没有z或j)
写出AC条件
#include<stdio.h>
#include<string.h>
int main() {
char s[1200];
while(gets(s)!=NULL) {
int l=strlen(s);
int a=0,b=0,c=0,z=0,j=0;
bool AC=false;
for(int i=0; i<l; i++) {
if(s[i]=='z') {
if(z==0)
z++;
else {
break;
}
} else if(s[i]=='j') {
if(j==0)
j++;
else {
break;
}
} else {
if(z==0)
a++;
else if(j==0)
b++;
else
c++;
}
}
if(b>0&&a*b==c)
AC=true;
if(!z||!j)
AC=false;
if(AC)
printf("Accepted
");
else
printf("Wrong Answer
");
}
return 0;
}
题目地址:【杭电】[3788]ZOJ问题