一矩形阵列由数字 0 到 9 组成,数字 1 到 9 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。c++
时间: 2023-05-30 17:05:28 浏览: 51
矩阵计算器,C++实现
5星 · 资源好评率100%
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1005
int n, m;
int matrix[MAXN][MAXN]; // 存储矩阵阵列
int visited[MAXN][MAXN]; // 标记是否访问过
int cnt; // 细胞个数
void dfs(int x, int y) {
visited[x][y] = 1; // 标记为已访问
if (x - 1 >= 0 && matrix[x-1][y] && !visited[x-1][y]) { // 上
dfs(x-1, y);
}
if (y + 1 < m && matrix[x][y+1] && !visited[x][y+1]) { // 右
dfs(x, y+1);
}
if (x + 1 < n && matrix[x+1][y] && !visited[x+1][y]) { // 下
dfs(x+1, y);
}
if (y - 1 >= 0 && matrix[x][y-1] && !visited[x][y-1]) { // 左
dfs(x, y-1);
}
}
int main() {
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &matrix[i][j]);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (matrix[i][j] && !visited[i][j]) { // 若为细胞且未访问过
cnt++; // 细胞个数加一
dfs(i, j); // 开始搜索
}
}
}
printf("%d\n", cnt);
return 0;
}
阅读全文