a746: 畫蛇添足
內容
楚有祠者,賜其舍人巵酒。舍人相謂曰:“數人飲之不足,一人飲之有餘,請畫地為蛇,先成者飲酒。”一人蛇先成,引酒且飲之,乃左手持巵,右手畫蛇曰:“吾能為之足。”未成,一人之蛇成,奪其巵曰:“蛇固無足,子安能為之足?”遂飲其酒。為蛇足者,終亡其酒。
話說那位先畫出了蛇卻沒喝到酒的人,想一雪前恥!所以他找到了天才的你,請你幫他編個程式打敗其他人。
他給你一塊用圍欄圍起的,邊長為 n 的正方形地(已經分為 n*n 個邊長為 1 的小正方形),如下圖所示:
地上按順序已經畫了 m 個點(在地(x,y)上),請你編個程式,將這些點依次連起來。
不過,這回他會不會再畫蛇添足,就由不得我們了= =|||。
輸入
多組測資,以 EOF 結束。
每組測資第一行,有兩個數字,即為題目所述之 n,m(1≤n,m≤500)。
接下來 m 行,每行兩個數字,表示第 1…m 個點在地(x,y)上。 保證前一個點和後一個點所確定的線段一定平行於圍欄的一邊。
4 5
1 1
1 4
4 4
4 1
1 1
4 5
1 1
1 4
4 4
4 1
1 1
輸出
對於每組測資輸出一次。
用“-”和“|”圈出這塊地(當然是畫過畫之後的),這塊地分為 n*n 個邊長為 1 的小正方形,其中沒有被畫點或線的用“ ”表示,其餘用“*”表示。
如輸入範例在連接後,紅色的為被畫點和線的地,黑色的為沒有被畫點和線的地。
輸出範例如下。
------
|****|
|* *|
|* *|
|****|
------
------
|****|
|* *|
|* *|
|****|
------
------
|****|
|* *|
|* *|
|****|
------
解題思路
簡單的迴圈和條件判斷。
完整程式碼
AC (3ms, 336KB)
|