由數字000組成的方陣中,有一任意形狀閉合圈,閉合圈由數字111構成,圍圈時只走上下左右444個方向。現要求把閉合圈內的所有空間都填寫成222.例如:6×66 \times 66×6的方陣(n=6n=6n=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≤n≤30)n(1 \le n \le 30)n(1≤n≤30)
接下來nnn行,由000和111組成的n×nn \times nn×n的方陣。
方陣內只有乙個閉合圈,圈內至少有乙個000。
//感謝黃小u飲品指出本題資料和資料格式不一樣. 已修改(輸入格式)
輸出格式
已經填好數字222的完整方陣。
輸入輸出樣例
輸入 #1
60 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
輸出 #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
說明/提示
1≤n≤301 \le n \le 301≤n≤30
基礎的搜尋題目,只要找好搜尋的開端,將封閉範圍內的所有零都完成搜尋就好.
任何的開端一定包含:
1 11 0
#include
using
namespace std;
int n;
int map[30]
[30], next_step[
2]=,
,,};
bool
judge
(int
,int);
//找到開端
void
dfs(
int,
int)
;int
main()
return0;
}}}bool
judge
(int x,
int y)
void
dfs(
int x,
int y)
}
P1162 填塗顏色(dfs)
由數字00組成的方陣中,有一任意形狀閉合圈,閉合圈由數字11構成,圍圈時只走上下左右44個方向。現要求把閉合圈內的所有空間都填寫成22.例如 6 times 66 6的方陣 n 6n 6 塗色前和塗色後的方陣如下 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0...
P1162 填塗顏色
題目描述 由數字000組成的方陣中,有一任意形狀閉合圈,閉合圈由數字111構成,圍圈時只走上下左右444個方向。現要求把閉合圈內的所有空間都填寫成222.例如 6 66 times 66 6的方陣 n 6n 6n 6 塗色前和塗色後的方陣如下 0 0 0 0 0 0 0 0 1 1 1 1 0 1 ...
P1162填塗顏色
這還是乙個搜尋題,難度較低,但我提交第三次才ac.觀察0地圖左上角的上面和左面都是一,所以先把他找粗來,然後設成start,然後dfs找到與他聯通的塊,塗成2即可。再說一下自己犯的低階錯誤 1.當找到坐上角時,必須先break掉裡面的for,然後bool變數必須放在第乙個for的裡面,但我放在了上面...