695. 岛屿的最大面积(dfs)

695. 岛屿的最大面积

class Solution {
public:
    int maxAreaOfIsland(vector<vector<int>>& grid) {
        int hh=grid.size();//
        int ll=grid[0].size();//
        if(hh==0)
            return 0;
        int ans=0,res=0;
        for(int i=0;i<hh;i++)
        {
            for(int j=0;j<ll;j++)
            {
                if(grid[i][j]==1)
                {
                    ans=0;
                    dfs(grid,i,j,ans);
                    res=max(res,ans);
                }
            }
        }
        return res;
    }
    void dfs(vector<vector<int>>& grid,int h,int l,int &ans)
    {

        int hh=grid.size();//
        int ll=grid[0].size();//
        grid[h][l]=0;//走过就变成0,防止下次还走
        ans++;//找到符合的加一个
        //垂直方向上下左右走,且判断搜的时候会不会出边界
        if(h-1>=0&&grid[h-1][l]==1)  //行-1,向上搜
            dfs(grid,h-1,l,ans);
        if(h+1<hh&&grid[h+1][l]==1)  //行+1,向下搜
            dfs(grid,h+1,l,ans);
        if(l-1>=0&&grid[h][l-1]==1)  //列-1,向左走
            dfs(grid,h,l-1,ans);
        if(l+1<ll&&grid[h][l+1]==1)  //列+1,向右走
            dfs(grid,h,l+1,ans);   
    }
};
原文地址:https://www.cnblogs.com/Vampire6/p/13127562.html