题目描述:
一矩形阵列由数字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; }