是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
1、以z开头j结尾的字符串,中间无论多少个‘o’都Accepted;
2、第一次出现z的之前字符的个数 ×第一次出现z和最后出现j之间的‘o’的个数(且不能为空)=最后出现j之后的字符个数Accepted;
代码如下:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
int b,mid,e;
while(cin>>s)
{
int i,j;
for(i=0;i<s.size();i++)
if(s[i]=='z')
{
b=i;
break;
}
for(j=s.size()-1;j>=0;j--)
if(s[j]=='j')
{
e=s.size()-j-1;
break;
}
mid=0;
for(i+=1;i<j;i++)
if(s[i]=='o')
mid++;
if(mid&&mid==s.size()-b-e-2&&b*mid==e)
cout<<"Accepted\n";
else
cout<<"Wrong Answer\n";
}
return 0;
}
比如 jzojz 杭电上Accepted,九度上是Wrong Answer
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
int b,mid,e;
while(cin>>s)
{
int i,j,tmp,f1=1,f2=1;
tmp=0;
for(i=0;i<s.size();i++)
if(s[i]=='z')
{
b=i;
break;
}
else if(s[i]=='o')
tmp++;
if(tmp!=b)
f1=0;
tmp=0;
for(j=s.size()-1;j>=0;j--)
if(s[j]=='j')
{
e=s.size()-j-1;
break;
}
else if(s[j]=='o')
tmp++;
if(tmp!=e)
f2=0;
mid=0;
for(i+=1;i<j;i++)
if(s[i]=='o')
mid++;
if(mid&&f1&&f2&&mid==s.size()-b-e-2&&b*mid==e)
cout<<"Accepted\n";
else
cout<<"Wrong Answer\n";
}
return 0;
}