Hdoj3788ZOJ问题

来源:互联网 发布:成龙国外影响力 知乎 编辑:程序博客网 时间:2024/05/21 17:09

Hdoj3788:

九度oj1006:

Problem Description
对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。

是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
 

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

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

Sample Input
zojozojoozoojoooozoojoooozoojozojooooozojozojoooo
 

Sample Output
AcceptedAcceptedAcceptedAcceptedAcceptedAcceptedWrong AnswerWrong Answer
 

Source
浙大计算机研究生复试上机考试-2010年
 

Recommend
notonlysuccess
 

杭电上要求:

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


九度上要求加两条判断,第一次出现z的之前字符必须均为‘o’,最后出现j之后的字符必须均为‘o’。

比如 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;}


原创粉丝点击