題目敘述
本題採EOF方式收資料,每筆資料有一個字串,會包含兩個數字。要求輸出這兩個數字組合而成的座標之後的位置。
範例輸入 #1
(1,5)
(6,7)
(10,10)
(8,4)
(7,9)
範例輸出 #1
----1-----
----------
----------
----------
----------
------2---
--------5-
---4------
----------
---------3
範例輸入 #2
(1,1)
(3,7)
(2,8)
範例輸出 #2
1---------
-------3--
------2---
----------
----------
----------
----------
----------
----------
----------
解題思路
將座標取出來之後使用Map來紀錄每一個座標的位置。之後使用For迴圈10*10,如果目前的 (i, j) 在Map中有存取資料而非0,則輸出這個Map值,如果是0則輸出-。
解題程式碼如下 (僅供參考):
#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";
}
}
留言
張貼留言