ZeroJudge C054: WERTYU

同題:UVa 10082 – WERTYU

打字時一個常見的錯誤就是沒有把手放在正確位置,而是偏右邊一個位置。所以會發生 Q 被打成 W,J 被打成 K 等等的情況。你的任務就是要把打錯的字修正回來。

ZeroJudge C054
題目解說圖片

範例測資

範例輸入範例輸出
輸入包含許多列,每列可能包含有數字,空白字元,大寫英文字母(QAZ除外),標點符號(`除外)。對每一列中的每個字元,請輸出在鍵盤 (如上圖) 上其左邊一個位置的字元。但是輸入中的空白字元,輸出時亦請輸出空白字元。
O S, GOMR YPFSU/
URD. ,U [JPMR MI,NRT OD 8346333
I AM FINE TODAY.
YES, MY PHONE NUMBER IS 7235222

解題思路

可以使用 Map 來建檔,需要注意的是 \ 和 ‘ 都屬於特殊字元需要用另一個寫法,\ 要寫成 \\,’ 要寫成 \’。

範例程式碼-ZeroJudge C054: WERTYU

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

int main() {
    map<char, char>MAP;
    MAP['`'] = '`';
    MAP['1'] = '`';
    MAP['2'] = '1';
    MAP['3'] = '2';
    MAP['4'] = '3';
    MAP['5'] = '4';
    MAP['6'] = '5';
    MAP['7'] = '6';
    MAP['8'] = '7';
    MAP['9'] = '8';
    MAP['0'] = '9';
    MAP['-'] = '0';
    MAP['='] = '-';
    MAP['Q'] = 'Q';
    MAP['W'] = 'Q';
    MAP['E'] = 'W';
    MAP['R'] = 'E';
    MAP['T'] = 'R';
    MAP['Y'] = 'T';
    MAP['U'] = 'Y';
    MAP['I'] = 'U';
    MAP['O'] = 'I';
    MAP['P'] = 'O';
    MAP['['] = 'P';
    MAP[']'] = '[';
    MAP['\\'] = ']';
    MAP['A'] = 'A';
    MAP['S'] = 'A';
    MAP['D'] = 'S';
    MAP['F'] = 'D';
    MAP['G'] = 'F';
    MAP['H'] = 'G';
    MAP['J'] = 'H';
    MAP['K'] = 'J';
    MAP['L'] = 'K';
    MAP[';'] = 'L';
    MAP['\''] = ';';
    MAP['Z'] = 'Z';
    MAP['X'] = 'Z';
    MAP['C'] = 'X';
    MAP['V'] = 'C';
    MAP['B'] = 'V';
    MAP['N'] = 'B';
    MAP['M'] = 'N';
    MAP[','] = 'M';
    MAP['.'] = ',';
    MAP['/'] = '.';
    MAP[' '] = ' ';
    string str;
    while (getline(cin, str))
    {
        for (int i = 0; i<str.length(); i++)
        {
            cout << MAP[str[i]];
        }
        cout << "\n";
    }
}

//ZeroJudge C054
//Dr. SeanXD

發佈留言