b701: 我的領土有多大
內容
安安國是個島國,有大小不等的小島,身為地政首長的你想要瞭解每個島嶼的面積,以及每個島嶼的極點,如極北、極南、極東、極西。
現在你手上有 0、1 構成的地圖檔,0 代表海洋,1 代表陸地。陸地沒有相連的各視為獨立的小島
有一點點相連的,則視為同一小島
依照土地所在的位置,由北而南、由西而東順序顯示
請完成您的任務。
輸入
前面兩個數字 16 <=X<=512 16 <=Y<=512
分別代表地圖資料的 X 軸及 Y 軸長度
下方的地圖用 0 代表海洋,1 代表陸地。
16 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 1 1 0 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 1 0 0 0 0 0 1 1 0 0 0 0
0 0 1 0 1 0 0 0 0 1 1 1 1 1 0 0
0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0
0 0 0 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
輸出
每一塊土地輸出五個數字
W N E S A
分別代表極西、極北、極東、極南、面積
依照土地所在的位置,由上而下、由左而右順序顯示
4 2 12 9 36
2 11 4 14 7
9 11 13 13 9
解題思路
用迴圈找到陸地之後就用 DFS 由該地開始遍歷整個島,並將遍歷到的地方都改成海,如此一來於該次遍歷結束後整個島都會變成海,即可避免重複判斷到同一個島。
完整程式碼
AC (2ms, 156KB)
|