Hdoj3788ZOJ问题

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
zoj ozojo ozoojoo oozoojoooo zooj ozojo oooozojo zojoooo
 

Sample Output
Accepted Accepted Accepted Accepted Accepted Accepted Wrong Answer Wrong Answer
 

Source
 

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章