http://ac.jobdu.com/problem.php?pid=1006ZOJ问题
/*
若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
这里azbojac和azbjc相比 z和j中间+了一个o j后面就+了一个a 而z前面也有一个a
以此类推
如果再执行一次这个规定
那么z和j中间就+了2个o 后面也+了2个前面的a
...
所以z前面'o'的个数乘以z和j中间o的个数=j后面o的个数
*/
#include<iostream>
using namespace std;
#include<stdio.h>
#include<string.h>
int main(void)
{
int i,len,numj,numz,front,mid,back;
char str[1008];
while(scanf("%s",str)!=EOF)
{
len=strlen(str);
numj=numz=0;
for(i=0;i<len;i++)
{
if(str[i]=='j')
numj++;
else if(str[i]=='z')
numz++;
}
if(numj!=1 || numz!=1) //合法的字符串中只包含一个z和一个j
{
printf("Wrong Answer\n");
continue;
}
front=mid=back=0;
for(i=0;str[i]!='z';i++)
front++;
i++;
for(;i<len && str[i]!='j';i++)
mid++;
i++;
for(;i<len;i++)
back++;
if(mid>0 && front*mid==back)
printf("Accepted\n");
else
printf("Wrong Answer\n");
}
return 0;
}
本文深入探讨了一道ZOJ题目的解决策略,重点在于理解字符串中的特定模式如何影响AC判断过程。通过分析字符串中字符的排列规律,特别是关于'o'字符的分布与特定子串的关系,提出了一个有效的方法来识别满足条件的字符串,从而实现正确的AC判断。

被折叠的 条评论
为什么被折叠?



