DFS算法最简单例子——数房子问题
问题描述
中兴捧月数房子问题
讨论
可以遍历二维数组,一旦发现值为1的值,就通过DFS算法将该“房子”全部置0,同时房子计数加一
实现
void dfs(int i, int j)
{
if(i<0 || i>m-1 || j<0 || j>n-1 || grid[i][j]==0) return;
grid[i][j]=0;//置0
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
}
int gridsearch()
{
int res=0;
// 遍历m*n的二维数组
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(grid[i][j])
{
res++;
dfs(i,j);
}
}
}
return res;
}
版权声明:本文为lawlietfans原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。