同題: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