是否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;
}