ZeroJudge L003: 棋盤

小明想下棋,但是他身邊沒有棋盤,因此他想把坐標記錄下來,再呈現圖像出來。請你編程一段程序,幫助小明解決問題。

棋盤為 10*10。

範例測資

範例輸入範例輸出
輸入共有 N 行,以 EOF 結束。
格式:(y 值, x 值)
y 值為第幾列 (縱),x 是指第幾行 (橫)。
輸出共有十行,詳見範例輸出。棋盤裡的數字代表第幾步。
(1,5)
(6,7)
(10,10)
(8,4)
(7,9)
—-1—–
———-
———-
———-
———-
——2—
——–5-
—4——
———-
———3
(1,1)
(3,7)
(2,8)
1———
——-3–
——2—
———-
———-
———-
———-
———-
———-
———-

解題思路

座標取出來之後使用 Map 來紀錄每一個座標的位置。之後使用 For迴圈 10*10 ,如果目前的 (i, j) 在Map中有存取資料而非0,則輸出這個 Map 值,如果是0則輸出-。

範例程式碼-ZeroJudge L003: 棋盤

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

pair<int, int> axis (int a, int b)
{
    pair<int, int>tmp;
    tmp.first = a;
    tmp.second = b;
    return tmp;
}

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    string str;
    int count = 1;
    map<pair<int, int>, int>MAP;
    while (cin >> str)
    {
        int a, b;
        if (str[2] != ',')
        {
            a = 10;
            if (str[5] != ')') b = 10;
            else b = int(str[4] - '0');
        }
        else
        {
            a = int(str[1] - '0');
            if (str[4] != ')') b = 10;
            else b = int(str[3] - '0');
        }
        MAP[axis(a, b)] = count;
        count++;
    }
    for (int i = 1; i<=10; i++)
    {
        for (int j = 1; j<=10; j++)
        {
            if (MAP[axis(i, j)] != 0) cout << MAP[axis(i, j)];
            else cout << "-";
        }
        cout << "\n";
    }
}

//ZeroJudge L003
//Dr. SeanXD

發佈留言