ZeroJudge A466: One-Two-Three

同題:UVa 12289 – One-Two-Three

你的弟弟剛學會寫英文的一二三。他在一張紙上寫了很多這幾個字,而你的工作便是辨認它們。

要注意的是你弟弟不過是個小孩子,因此他會犯些小錯誤:

  • 至多一個錯誤的字母
  • 單字長度一定是正確的
  • 他所寫的一定是小寫字母
  • 每個單字只可能有一種合理解釋

範例測資

範例輸入範例輸出
第一行包含你弟弟所寫單字數。接下來的每一行含有一個小寫字母組成的單字。單字必符合上述限制:至多一個錯誤的字母,但是單字長度永遠正確。輸入中最多有 10 個單字。對每筆測資,輸出單字的數值。
3
owe
too
theee
1
2
3

解題思路

「Three」這個答案可以直接判斷字串長度是否為 5 直接輸出。剩下的兩個其實組合方式只有 6 種,將這六種寫成 If 判斷式即可。

範例程式碼-ZeroJudge A466: One-Two-Three

#include <iostream>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    for (int i = 0; i<N; i++)
    {
        string str;
        cin >> str;
        if (str.length() == 5) cout << 3 << "\n";
        else
        {
            if (str[0] == 'o' && str[1] == 'n') cout << 1 << "\n";
            else if (str[1] == 'n' && str[2] == 'e') cout << 1 << "\n";
            else if (str[2] == 'e' && str[0] == 'o') cout << 1 << "\n";
            if (str[0] == 't' && str[1] == 'w') cout << 2 << "\n";
            else if (str[1] == 'w' && str[2] == 'o') cout << 2 << "\n";
            else if (str[2] == 'o' && str[0] == 't') cout << 2 << "\n";
        }
    }
}

//ZeroJudge A466
//Dr. SeanXD

發佈留言