题目
一矩形阵列由数字0
到9
组成,数字1
到9
代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如:
阵列
4 10
0234500067
1034560500
2045600671
0000000089
有4个细胞。
思路
用dfs
来做。遍历上下左右
代码
include
define maxn 1007
using namespace std;
int n,m, a[maxn][maxn];
char s[maxn][maxn];
void dfs(int x,int y)
{
if(x<0||x>n-1||y<0||y>m-1||a[x][y]||s[x][y]=='0')return;
a[x][y]=1;
dfs(x-1,y);
dfs(x+1,y);
dfs(x,y-1);
dfs(x,y+1);
}
int main()
{
int cnt=0;
cin>>n>>m;
for(int i = 0; i < n; i++)
scanf("%s", s[i]);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
if(s[i][j]!='0'&&a[i][j]!=1)
{
cnt++;
dfs(i,j);
}
}
}
cout<<cnt;
return 0;
}