题目描述
一矩形阵列由数字 0 到 9 组成,数字 1 到 9 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。
输入
第一行两个整数代表矩阵大小 n 和 m。 接下来 n 行,每行一个长度为 m 的只含字符 0 到 9 的字符串,代表这个n×m 的矩阵。
输出
一行一个整数代表细胞个数。
样例输入 复制
4 10
0234500067
1034560500
2045600671
0000000089
样例输出 复制
4
提示
0 < m, n <= 400
#include <bits/stdc++.h>
using namespace std;
//把一维数组当二维数组用,用于寻址,n为二维数组列数,i,j为位置
#define IDX(n1,i1,j1) (((n1)*(i1))+(j1))
//宏定义里的变量必须加上括号,否则可能出错
void search(char *s, bool *t, int m, int n, int wid) {
//向上
if ((s[IDX(wid, m + 1, n)] != '0') && !t[IDX(wid, m + 1, n)]) {
t[IDX(wid, m + 1, n) ] = true;
//继续搜
search(s, t, m + 1, n, wid);
}
//向下
if ((s[IDX(wid, m - 1, n)] != '0') && !t[IDX(wid,