由數字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
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
輸入格式:
每組測試資料第一行乙個整數n(1 \le n \le 30)n(1≤n≤30)
接下來nn行,由00和11組成的n \times nn×n的方陣。
方陣內只有乙個閉合圈,圈內至少有乙個00。
//感謝黃小u飲品指出本題資料和資料格式不一樣. 已修改(輸入格式)
輸出格式:
已經填好數字22的完整方陣。
輸入樣例#1:複製
6輸出樣例#1:複製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 01 \le n \le 301≤n≤300 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
思路:先把所有的0變成2,然後在考慮怎麼把牆外的變回0,注意,既然在牆外了,就一定可以碰到四條邊界,不妨從四條邊界開始往內搜,遇到牆就停止,就可以把牆外的2變回0了
#includeusing namespace std;
int a[35][35],n;
struct node;
queueq;
node temp;
void bfsearch()//搜尋
if(x+1=0&&a[x][y-1]==2)
if(y+1>n;
for(int i=0;i>a[i][j];
if(a[i][j]==0) a[i][j]=2; //全部標記為2 }
for(int i=0;ifor(int i=0;ifor(int j=0;jreturn 0;}/*
60 0 1 1 1 0
1 1 1 0 1 0
1 0 0 0 0 1
1 1 0 1 1 1
0 1 0 1 0 0
0 1 1 1 0 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 ...
洛谷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...