P1451 求細胞數量

2021-09-03 05:57:49 字數 1142 閱讀 8767

這是一道典型的廣搜裸題,不多說,上**:

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

var i,j,k,t,h,q:longint;

a:array[-20..1000,-20..1000]of char;

x,y,s:array[-2..1000]of longint;

b:array[-20..1000,-20..1000]of boolean;

m,n:longint;

begin

read(m,n);

readln;

for i:=1 to m do

for j:=1 to n do b[i,j]:=true;

for i:=1 to m do

begin

for j:=1 to n do begin read(a[i,j]); if a[i,j]='0' then b[i,j]:=false; end;

readln;

end;

for i:=1 to m do//每個格仔bfs

for j:=1 to n do

begin

if b[i,j] then

begin

t:=1;

h:=1;

x:=s;

y:=s;

x[1]:=i;

y[1]:=j;

inc(q);

repeat

for k:=1 to 4 do

if b[x[t]+z[k,1],y[t]+z[k,2]] and (a[x[t]+z[k,1],y[t]+z[k,2]]<>'0') then//典型廣搜

begin

inc(h);

b[x[t]+z[k,1],y[t]+z[k,2]]:=false;

x[h]:=x[t]+z[k,1];

y[h]:=y[t]+z[k,2];

end;

inc(t);

until t>h;

end;

end;

write(q);//輸出即可

end.

這是一道剛學bfs時改寫的,沒什麼難度,主要要打熟模板。

P1451 求細胞數量

題目描述 一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右若還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。1 m,n 100 輸入輸出格式 輸入格式 輸入 整數m,n m行,n列 矩陣輸出格式 輸出 細胞的個數 輸入輸出樣例 輸入樣例 1 4 10 0234500...

P1451 求細胞數量

一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右若還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。1 m,n 100 輸入格式 輸入 整數m,n m行,n列 矩陣輸出格式 輸出 細胞的個數 這個題主要是用到了搜尋的知識 首先我們先來理解一下題意 輸入樣例 1 4 1...

P1451 求細胞數量

解讀一下題目 結合樣例 其實所有非零數字性質都是一樣的,方便起見把他們都處理為1 因此這個陣中只有0,1兩個數字 此時我們把0數字虛化 再摘下眼鏡 您會發現有4個細胞 4個小聚落 一定要注意這個樣例!一定要注意這個樣例!一定要注意這個樣例!他在輸入細胞的時候,是把他當做乙個字串輸入的 泥看每個數字之...