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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM