关闭

问题 H: 查找细胞

231人阅读 评论(0) 收藏 举报
分类:

题目描述

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

输入

第一行输入n,m;表示n行m列矩阵。

接下来输入该n*m矩阵

输出

细胞个数

样例输入

4 10 0234500067 1034560500 2045600671 0000000089

样例输出

4
program xibao;
const dx:array[1..4] of -1..1=(-1,0,1,0);
dy:array[1..4] of -1..1=(0,1,0,-1);
var int:text;
name,s:string;
pic:array[1..50,1..79] of byte;
bz:array[1..50,1..79] of boolean;
m,n,i,j,num:integer;
h:array[1..4000,1..2] of byte;
procedure doing(p,q:integer);
var i,t,w,x,y:integer;
begin
inc(num);bz[p,q]:=false;
t:=1;w:=1;h[1,1]:=p;h[1,2]:=q;
repeat
for i:=1 to 4 do
begin
x:=h[t,1]+dx[i];
y:=h[t,2]+dy[i];
if (x>0) and (x<=m) and (y>0) and (y<=n) and bz[x,y]
then begin
inc(w);h[w,1]:=x;
h[w,2]:=y;bz[x,y]:=false;end;
end;
inc(t);
until t>w;
end;
begin
fillchar(bz,sizeof(bz),true);num:=0;
//assign(input,'input.txt');reset(input);
readln(m,n);
//assign(output,'output.txt');rewrite(output);
for i:=1 to m do
begin readln(s);
for j:=1 to n do
begin pic[i,j]:=ord(s[j])-ord('0');
if pic[i,j]=0 then bz[i,j]:=false;
end;
end;
for i:=1 to m do
for j:=1 to n do if bz[i,j] then doing(i,j);
writeln(num);
//close(input);
//close(output);
end.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15047次
    • 积分:108
    • 等级:
    • 排名:千里之外
    • 原创:91篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档