洛谷1162題目鏈結
由數字0和1組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如:6×6的方陣(n=6),塗色前和塗色後的方陣如下:思路:將原圖的外圍加一層0,利用bfs搜尋與map[0][0]可以遍歷到並且值為0的點,那麼能遍歷到的一定是外圍的0,不論有幾個閉合圈都滿足,閉合圈內的0一定無法被搜尋到,bfs後,只需要遍歷陣列,將沒有被訪問到並且值為0的點改為2即可,其他按原來輸出即可,需要注意的是加一層0後,3*3的矩陣就會變成5*5,dfs的時候要遍歷到0~n+1(wa了一次)。塗色前:
塗色後: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
1 1 1 1 1 1
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 2 2 1
1 1 1 1 1 1
ac**如下:
#include #include #include #include using namespace std;
int n;
//遍歷可訪問的點
int xx = ;
int yy = ;
//存圖
int map[40][40];
//標記訪問
int vis[40][40];
int main()
}px.push(0);
py.push(0);
vis[0][0] = 1;
while(!px.empty())
}//當前節點已經沒有可以到達的節點了,彈出佇列
px.pop();
py.pop();
}for(int i = 1;i <= n;i++)
else
}cout<}
return 0;
}
填塗顏色 洛谷 1162
題目描述 由數字0 組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6x6的方陣 n 6 塗色前和塗色後的方陣如下 00 0000 0000 0000 1111 0011 1101 1001 0112 2111 0001 ...
洛谷oj1162 填塗顏色(bfs)
由數字0 組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6x6的方陣 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 ...
BFS 洛谷P1162填塗顏色
題目 題解 解法一 bfs includeusing namespace std const int m 31 bool vis m m int n,m,a,b,c,map m m queue q void bfs int x,int y int main for int i 1 i n i i n...