從某一點開始搜尋並標記,碰到牆或者已經被搜尋過就返回。除了牆以外沒有被標記過的點就是被牆圍住的點,最後輸出2即可。
此題最坑的地方在於有可能開始搜尋的第乙個點就是牆,因此存圖的陣列下標從1開始而非0,目的是在圖的外面加一圈0,這樣就能解決圖的第乙個點就是牆的問題。
注意遞迴結束的條件!
#include
#define max 35
using
namespace std;
int a[max]
[max]
;int dx=
, dy=
;int n;
void
dfs(
int x,
int y)
intmain()
cout<
}return0;
}
洛谷P1162填塗顏色 dfs做法
題目 分類是bfs,但dfs也可做 思路 因為要把被1包圍的0變成2,所以我們要找那些0是被1包起來的,但從另乙個角度思考,0被1分成了兩部分,外圈和內圈,我們可以通過找外圈來找內圈.做法 用陣列a 1 1 a n n 存輸入的數,在外面a 0 0 a n 1 n 1 存一圈0 為什麼要這樣?因為為...
洛谷P1162 填塗顏色
由數字0組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6 6的方陣 n 6 塗色前和塗色後的方陣如下 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1...
填塗顏色 洛谷P1162
由數字0組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6 6的方陣 n 6 塗色前和塗色後的方陣如下 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1...