一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m,n<=100
输入:
整数m,n(m行,n列)矩阵
输出:
细胞的个数
#include <iostream>
/*
测试数据
输入:
4 10
5234500067
1234560500
2145600671
0000000089
输出:
4
*/
using namespace std;
char s[105][105];
int n, m;
int dir[4][2] = { {1, 0}, {0, 1}, {0, -1}, {-1, 0} };
void dfs(int x, int y)
{
s[x][y] = '0';//搜索位置置为0,同时相当于标记,防止重复搜索
for (int i = 0; i < 4; i++)
{
int tx = x + dir[i][0];
int ty = y + dir[i][1];
if (tx < 0 || tx >= n || ty < 0 || ty >= m || s[tx][ty] == '0')
{
continue;
}
if (s[tx][ty] != '0')
{
dfs(tx, ty);
}
}
}
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++)
{
scanf("%s", s[i]);
}
int ans = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (s[i][j] != '0')
{
dfs(i, j);
ans++;
}
}
}
cout << ans << endl;
return 0;
}