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;
}
posted @ 2017-05-13 19:25  畑鹿驚  阅读(4230)  评论(0编辑  收藏