填塗顏色 洛谷 1162

2021-07-26 13:06:58 字數 2349 閱讀 8068

題目描述

由數字0 組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如:6x6的方陣(n=6),塗色前和塗色後的方陣如下:00

0000

0000

0000

1111

0011

1101

1001

0112

2111

0001

1122

2110

0001

1222

2111

1111

1111

11輸入輸出格式

輸入格式:

每組測試資料第一行乙個整數:n。其中n(1

<=n<=30)

接下來n行,由0和1組成的nxn的方陣。

方陣內只有乙個閉合圈,圈內至少有乙個0。

//感謝黃小u飲品指出本題資料和資料格式不一樣. 已修改(輸入格式)

輸出格式:

已經填好數字2的完整方陣。

輸入輸出樣例

輸入樣例#1:60

0000

0001

1110

1100

1110

0011

0000

1111

111輸出樣例#1:00

0000

0011

1101

1221

1122

2112

2221

1111

11題解:這道題用廣搜,先是從四條邊開始碰到0就向四個方向拓展,拓展到乙個不為1的點就可以把這個點入隊,然後輸出處理一下就行了。

const

maxn=30;

dx:array[1..4] of longint=(-1,0,1,0);

dy:array[1..4] of longint=(0,1,0,-1);

var a:array[0..maxn,0..maxn] of longint;

b:array[0..10000,1..3] of longint;

i,j,n:longint;

function

check

(x,y:longint):boolean;

begin

check:=true;

if (x<1) or (x>n) or (y<1) or (y>n) or (a[x,y]<>0) then

exit(false);

end;

procedure

dfs(qx,qy:longint);

var i,h,t,zx,zy:longint;

begin

b[1,1]:=qx;b[1,2]:=qy;

b[1,3]:=maxlongint;

h:=0;t:=1;

while hdo

begin

inc(h);

for i:=1to4

dobegin

zx:=b[h,1]+dx[i];

zy:=b[h,2]+dy[i];

if check(zx,zy) then

begin

inc(t);

b[t,1]:=zx;

b[t,2]:=zy;

a[zx,zy]:=maxlongint;

end;

end;

end;

end;

begin

readln(n);

for i:=1

to n do

for j:=1

to n do

read(a[i,j]);

for i:=1

to n do

begin

if a[1,i]=0

then dfs(1,i);

if a[i,1]=0

then dfs(i,1);

if a[n,i]=0

then dfs(n,i);

if a[i,n]=0

then dfs(i,n);

end;

for i:=1

to n do

begin

for j:=1

to n do

if a[i,j]=maxlongint

then

write(0,' ')

else

if a[i,j]=0

then

write(2,' ') else

write(a[i,j],' ');

writeln;

end;

end.

洛谷 1162 填塗顏色 BFS

洛谷1162題目鏈結 由數字0和1組成的方陣中,有一任意形狀閉合圈,閉合圈由數字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 ...

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