#include
using namespace std;
// dfs 二维空间统计四连通区域个数,并返回每个连通区域中的节点个数
int n = 3, m = 3, ans;
int vis[100], mp[100];
int dfs (int x, int y) { // 这个函数必须要传入行号和列号,不能传入降维至一维的编号
if (x = n || y = m) return 0;
if (vis[x*m+y]) return 0; // 这个是表示深搜过的点不去搜索了
if (!mp[x*m+y]) return 0;
vis[x*m+y] = 1;
mp[x*m+y] = 0; // 遍历过的地方要去掉标记,要不然主函数中后面的循环还以该点为起点深搜。
return 1 + dfs (x - 1, y) + dfs (x + 1, y) + dfs (x, y - 1) + dfs (x, y + 1);
}
int main()
{
mp[1*m+1] = mp[0*m+1] = mp[0*m+0] = 1;
mp[2*m+2] = 1;
for (int i = 0;i
1662186765
查看更多评论