题目描述
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。
解题思路
如上图所示,该矩阵可以划分为4个细胞。对该矩阵进行扫描,如果当前元素不为0,细胞个数加1,然后对其四个方向进行递归,然后将当前元素置为0。这样子通过两重循环就可以找到矩阵中的细胞个数。
代码实现
#include <iostream>
#include <queue>
#define maxn 105
using namespace std;
char temp;
int n,m,ans;
int arr[maxn][maxn];
bool book[maxn][maxn];
int dx[] = {0,0,-1,1};
int dy[] = {1,-1,0,0};
void dfs(int x,int y){
for(int i = 0; i < 4; i ++){
int X = x+dx[i];
int Y = y+dy[i];
if(X <= 0 || X > n || Y <= 0 || Y > m){