|
Пусть дана матрица Т[1..5, 1..6], элементы которой могут принимать значения 0 или 1. Определить число островков, образованных единицами используя рекурсивную подпрограмму.
Пример
0 1 0 1 1 0
1 0 0 0 1 0
0 1 1 0 1 1
1 1 1 0 1 0
0 1 0 0 1 0
Данная таблица содержит 4 островка
var t:array[1..100,1..100]of integer;
i,j,k,n,m:integer;
procedure insula(ip,jp:integer);
begin
if t[ip,jp]=1 then
begin
t[ip,jp]:=2;
if ((ip-1)>=1) then insula(ip-1,jp);
if ((jp-1)>=1) then insula(ip,jp-1);
if ((jp+1)<=n) then insula(ip,jp+1);
if ((ip+1)<=m) then insula(ip+1,jp);
end;
end;
BEGIN
write('N= '); readln(n);
write('M= '); readln(m);
for i:=1 to m do
for j:=1 to n do
readln(t[i,j]);
for i:=1 to m do begin
for j:=1 to n do
write(t[i,j]:3);
writeln;
end;
k:=0;
for i:=1 to m do
for j:=1 to n do
if t[i,j]=1 then begin
k:=k+1;
insula(i,j);
end;
Writeln('K= ',k);
END.
<< Назад
|
|