输入:一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m,n<=100)?
输出:输入:整数m,n(m行,n列)
矩阵
样例输入:输出:细胞的个数
样例输出:4 10
0234500067
1034560500
2045600671
0000000089
程序代码:4
#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;
}