695. Max Area of Island

最基础的搜索题,然后我忘了怎么写了。
该题目就是找连通图的最多连通的点的个数,只能上下左右四个方向连通。

class Solution {
public:
    int vis[50][50];
    int d[4][2]={{-1,0}, {1,0}, {0,-1}, {0,1}};
    int cnt=0;
    int m,n;
    int maxAreaOfIsland(vector<vector<int>>& grid) {
        m=grid.size();
        n=grid[0].size();
        int maxv=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                memset(vis,0,sizeof(vis));
                if(grid[i][j]){
                    cnt=0;
                    dfs(grid, i, j);
                    if(cnt>maxv)
                        maxv=cnt;
                }
            }
        }
        return maxv;
        
    }
    
    void dfs(vector<vector<int>>& grid, int x, int y){
        vis[x][y]=1;
        cnt++;      
        for(int i=0;i<4;i++){
            int xx=x+d[i][0];
            int yy=y+d[i][1];
            if(xx>=0&&xx<m&&yy>=0&&yy<n&&(vis[xx][yy]==0)&&grid[xx][yy]){
                dfs(grid, xx, yy);
            }
        }
    }
      
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容