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;
}
作者:kakashis
联系方式:fengshenjiev[AT]gmail.com
本文版权归作者所有,欢迎转载,演绎或用于商业目的,但是必须说明本文出处(包含链接)。