题目描述:

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

输入: 

输入:整数m,n(m行,n列)

矩阵

输出:

输出:细胞的个数 

样例输入: 

4 10

0234500067

1034560500

2045600671

0000000089

样例输出: 

程序代码: 
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,ans=0;
int a[105][105],vis[105][105];
int next1[4]={1,-1,0,0};
int next2[4]={0,0,-1,1};
void dfs(int x,int y)
{
	vis[x][y]=1;
	for(int i=0;i<4;i++)
	{
		int dx=x+next1[i];
		int dy=y+next2[i];
		if(a[dx][dy]==0||vis[dx][dy]==1)
			continue;
		dfs(dx,dy);
	}
}
int main()
{
	scanf("%d %d",&m,&n);
	memset(vis,0,sizeof(vis));
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			scanf("%1d",&a[i][j]);//依次读入一位 
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(vis[i][j]==0&&a[i][j]!=0)
			{
				dfs(i,j);
				ans++;
			}
		}
	}
	printf("%d\n",ans);
	return 0;
}