您的位置:首页 > 其它

ZOJ问题

2012-05-31 09:46 141 查看
题目描述:
对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。

是否AC的规则如下:

1. zoj能AC;

2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;

3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;

输入:

输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,字符串长度小于等于1000。

输出:

对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。

样例输入:

zoj
ozojo
ozoojoo
oozoojoooo
zooj
ozojo
oooozojo
zojoooo

样例输出:
Accepted
Accepted
Accepted
Accepted
Accepted
Accepted
Wrong Answer
Wrong Answer


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <cctype>

#include <vector>
#include <list>
#include <deque>
#include <string>
#include <algorithm>
#include <stack>
#include <queue>
#include <map>
#include <set>

using namespace std;

int tt=0;

int main()
{

char s[1000];

int i,j,k;

while(scanf("%s",s)!=EOF)
{

getchar();
int len=strlen(s);

tt=0;

if(len<3)
{cout<<"Wrong Answer"<<endl;tt=1;}
else if(strcmp(s,"zoj")==0)
{cout<<"Accepted"<<endl;tt=1;}
else
{

int lenl,lenr;

lenl=lenr=0;

i=0;
while((i<len)&&(s[i]=='o'))
{lenl++;i++;}

j=len-1;

while((j>=0)&&(s[j]=='o'))
{lenr++;j--;}

string ss="";

while(i<=j)
{
ss+=s[i];
i++;
}

if(lenl==lenr)
{

if(ss=="zoj")
{cout<<"Accepted"<<endl;tt=1;}
else
{

if((s[0]=='z')&&(s[len-1]=='j'))
{
int nn=0;
int tag=0;

for(i=1;i<(len-1);i++)
{
if(s[i]=='o')
nn++;
else
{
tag=1;
}

}

if((nn>1)&(!tag))
{cout<<"Accepted"<<endl;tt=1;}
}

}

}
else if(lenl*2==lenr)
{
if(ss=="zooj")
{cout<<"Accepted"<<endl;tt=1;}
}

}

if(!tt)
{cout<<"Wrong Answer"<<endl;}

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: