這是一道典型的廣搜裸題,不多說,上**:
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個小聚落 一定要注意這個樣例!一定要注意這個樣例!一定要注意這個樣例!他在輸入細胞的時候,是把他當做乙個字串輸入的 泥看每個數字之...