ZeroJudge A221: Big Number of Teams Will Solve This

同題:UVa 11734 – Big Number of Teams will Solve This

為一個簡單的程式題目撰寫一個程式碼並不是太大的問題,但是缺乏經驗的新人並不太知道,自己的輸出需要完全與 Judges的相同。

通常的時候,他們會輸出多餘的空格,因為他們認為這樣會讓輸出變的更好看。

但是真實的狀況是:你輸出的每一個字元都應該跟 Judges 的一模一樣。

如果在提交 Judges 的時候多輸出空格,你將會得到「輸出格式錯誤」(Output Format Error)。

如果在 Judges 忽略空格後,輸出仍不正確,則會得到「錯誤答案」(Wrong Answer)。

而「正確」(Yes) 則會在輸出完全匹配的時候獲得。

在這一題,你需要判定提交者的輸出 ,並且給出 Judges 的判定

範例測資

範例輸入範例輸出
在第一行會給出一個正整數 T (T < 20) 代表 共有幾組資料
每組資料會有兩行
第一行為 隊伍的輸出
第二行是 Judges 的輸出

每行至少會有一個字,最多 20 個字
隊伍的的輸出由空白跟字組成,Judges 的輸出則只有字
對於每組資料
你需要輸出一行
每一行包含了裁決編號 跟 裁決結果
請看範例測試
3
yes
yes
Casematters
casematters
no space please
nospaceplease
Case 1: Yes
Case 2: Wrong Answer
Case 3: Output Format Error
ZeroJudge A221 範例測資

解題思路

使用 Getline 來收字串,收完 T 之後記得要先 cin.ignore()。收完資料之後如果兩個字串想同的話就可以直接輸出「Yes」,如果不相同的話才要做下面的判斷。

使用 Map 來紀錄每個「非空白」字元的出現次數,跑「隊伍輸出」的時候將 Map[字元]++,跑「Judges 輸出」的時候將 Map[字元]–。

跑 for (auto it:Map),並且預設一個 WA 的布林值為 False,如果跑迴圈的時候有任何一個 it.second != 0,則代表有多餘或是有少字元,將 WA 設為 True 之後 Break 迴圈。

如果 WA == True,則輸出「Wrong Answer」,若迴圈結束後還是 False,則代表只是多輸出空格輸出「Output Format Error」。

範例程式碼-ZeroJudge A221: Big Number of Teams Will Solve This

#include <iostream>
#include <map>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    cin.ignore();
    for (int i = 0; i<N; i++)
    {
        string a, b;
        getline(cin, a);
        getline(cin, b);
        cout << "Case " << i+1 << ": ";
        if (a == b) cout << "Yes\n";
        else
        {
            map<char, int>MAP;
            for (int j = 0; j<a.length(); j++)
            {
                if (a[j] != ' ') MAP[a[j]]++;
            }
            for (int j = 0; j<b.length(); j++)
            {
                if (b[j] != ' ') MAP[b[j]]--;
            }
            bool WA = false;
            for (auto it:MAP)
            {
                if (it.second != 0)
                {
                    WA = true;
                    break;
                }
            }
            if (WA) cout << "Wrong Answer\n";
            else cout << "Output Format Error\n";
        }
    }
}

//ZeroJudge A221
//Dr. SeanXD

發佈留言