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


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