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