P1162 填塗顏色 題解(勿抄襲)

2022-04-29 21:00:09 字數 1173 閱讀 5758

由數字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≤n≤30)接下來n行,由0和1組成的n×n的方陣。方陣內只有乙個閉合圈,圈內至少有乙個0。已經填好數字2的完整方陣。輸入#1
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

輸出#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≤30

思路:首先看資料,很明顯,絕對可以用深搜,但個人其實比較偏向於用廣搜233(想用深搜的朋友們自己想哈)

可以將外面一圈的元素標記為1,再儲存元素為0的行列下標,最後根據下標標記為2即可

**:

#include

using

namespace std;

int a[35]

[35],b[35]

[35],n,dx,dy;

int d[2]

[4]=

,};struct node

;void

bfs()}

}}intmain()

bfs();

for(

int i=

1;i<=n;

++i)

printf

("\n");

}return0;

}

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的裡面,但我放在了上面...

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...