#30607: C++ 參考解答


zaqxswdce26@gmail.com (卡比獸)

學校 : 不指定學校
編號 : 192970
來源 : [49.216.222.215]
最後登入時間 :
2023-10-24 13:17:05
a221. 11734 - Big Number of Teams will Solve This -- UVa11734 | From: [220.141.64.118] | 發表日期 : 2022-05-31 18:32

#include <iostream>
#include <string>
using namespace std;
int main(void)
{ //題目意思為,找輸入的字串是否有空格,如果有空格且忽略空格時跟答案是一樣的就輸入Output Format Error
    //有空格且忽略後跟答案比較還是不正確就輸出Wrong Answer,不是前面兩種狀況就是Yes 
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int a,b,c,nows,nowa,d;
    string str,ans;
    bool wa,ofe;//紀錄是否有錯誤答案跟空格 
    
    (cin>>a).get();
    for(c=1;c<=a;c++)
    {
        getline(cin,str);
        getline(cin,ans);
        ofe=false;
        for(auto i:str)
            if(i==' ')
            {
                ofe=true;;
                break;
            }
        wa=false;
        nows=nowa=0; //要做比較的str跟ans index 
        while(!wa) //two point
        {
            if(str[nows]==' ')//空格忽略 
                nows++;
            else
                if(str[nows]!=ans[nowa])//忽略空格答案還是不一樣 
                    wa=true;
                else //兩邊往後一位繼續比較 
                {
                    nows++;
                    nowa++;
                }
            if(nowa>=ans.size() && nows<str.size())//ans全比較完了(代表str前面部分跟ans都一樣),但str後面還有未被比較完的部分, 
                for(d=nows;d<str.size() && !wa;d++)//所以檢查剩餘部分,如果有任何非空格字元存在代表是錯誤答案
                    if(str[d]!=' ')
                        wa=true;
            if(nowa>=ans.size() && nows>=str.size())//兩邊都剛好比較完,代表Yes 
                break;
            if(nowa<ans.size() && nows>=str.size())//str忽略空格部分,長度比ans短,錯誤答案 
                wa=true;
        }
        cout<<"Case "<<c<<": ";
        if(!wa)
            if(ofe)
                cout<<"Output Format Error\n";
            else
                cout<<"Yes\n";
        else
            cout<<"Wrong Answer\n";
    }

    return 0;
}

 
ZeroJudge Forum