好吧,表示规则读了N遍也没读懂,看了大神的解释才明白。。附上:
ZOJ串检验,逻辑等价变换,命题等价于:有且仅有一个 Z,有且仅有一个 J,J 在 Z 后面且不能紧跟在后面,另外,中间夹杂的三段 O 分别有 a, b, c 的长度,必须满足 a + b = c。
#include<stdio.h>
#include<string.h>
int main()
{
char s[100];
while (gets(s) != NULL)
{
int cz = 0, cj = 0, iz, ij, i;
for (i = 0; s[i] != '\0'; i++)
{
if (s[i] == 'Z')
{
cz++;
iz = i;
}
if (s[i] == 'J')
{
cj++;
ij = i;
}
}
int ac = cz == 1 && cj == 1 && ij - iz > 1
&& ij - 1 == strlen(s) - ij - 1;
printf(ac ? "Accepted\n" : "Wrong Answer\n");
}
return 0;
}