欢迎使用CSDN-markdown编辑器

来源:互联网 发布:淘宝网婴儿用品 编辑:程序博客网 时间:2024/06/10 12:40

P1451 求细胞数量
题目描述

一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m<=80,1<=n<=50)

输入输出格式

输入格式:
输入:整数m,n(m行,n列)矩阵

输出格式:
输出:细胞的个数

输入输出样例

输入样例#1:
4 10
0234500067
1034560500
2045600671
0000000089
输出样例#1:
4

const xx:array[1..4]of longint=(1,-1,0,0);
yy:array[1..4]of longint=(0,0,1,-1);
var map:array[-1..1000,0..1000]of boolean;
count,n,m,i,j:longint;
ch:char;
h:array[0..1000,1..2]of longint;
procedure bfs(x,y:longint);
var head,tail,a,b,i:longint;
begin
inc(count);
head:=0;tail:=1;
map[x,y]:=false;
h[1,1]:=x;h[1,2]:=y;
while head<=tail do
begin
inc(head);
for i:=1 to 4 do
begin
a:=h[head,1]+xx[i];b:=h[head,2]+yy[i];
if map[a,b] and (a>=1) and (a<=n) and (b>=1) and (b<=m)then
begin
inc(tail);
h[tail,1]:=a;h[tail,2]:=b;
map[a,b]:=false;
end;
end;
end;
end;
begin
readln(n,m);
fillchar(map,sizeof(map),true);
for i:=1 to n do
begin
for j:=1 to m do
begin
read(ch);
if ch=’0’ then map[i,j]:=false;
end;
readln;
end;
count:=0;
for i:=1 to n do
for j:=1 to m do
if map[i,j] then begin bfs(i,j);end;
writeln(count);
end.

0 0
原创粉丝点击