切換
舊版
前往
大廳
主題

ZeroJudge - e172: 圍棋入門 - 棋譜 解題心得

Not In My Back Yard | 2019-05-06 14:51:37 | 巴幣 0 | 人氣 153

題目連結:


題目大意:
給定一正整數 n (0 ≦ n ≦ 500 , n = 0 時停止程式),代表接下來有 n 列輸入。每列給定兩正整數 x 、 y (1 ≦ x 、 y ≦ 19 ),代表一步棋下的位置(左下角為(1, 1)、右上為(19, 19))。

求棋盤最後的樣子,每個下的棋子要標註步數(第一步就標「1」、第二步標「2」,以此類推)。若有重複下在同一個點的步數,請在輸出完棋盤後標記第幾步與第幾步是相同的。若有多個重複步數(多個棋子),請按照「被」重複的步數編號由小到大列出;但如果是多個步數重複於同一個步數(單一棋子),請列於同一列輸出。

輸出格式參見範例輸出。



範例輸入:
3
4 4
16 4
4 16
8
1 1
1 2
2 1
2 2
3 2
3 1
2 1
1 1
0


範例輸出:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 3 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 = 8
3 = 7


解題思維:
單純的流程控制。先定義出一個 19 × 19 的二維陣列 M ,並將其元素預設成零。

接著從 1 開始數到 n ,在讀入步數的 x 、 y 座標的同時紀錄這是「第幾步」。接著就把對應的位置(My, x,代表 M 的第 y 列第 x 行)設為現在的步數之值。若 My, x > 0 ,代表已經有棋子下在這裡,代表有重複的步數。此時,可以用另一二維陣列紀錄第幾步與第幾步重複。

最後,輸出 M 的樣子,以及哪些步數重複了。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作