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

推荐阅读更多精彩内容