跟求岛屿数量的题目差不多,依旧是深度搜索或者广度搜索问题
class Solution {
private:
int maxAreaOfIsland(vector<vector<int>>& grid,vector<vector<bool>>& visited,int x,int y){
if(x<0||x>=grid.size()||y<0||y>=grid[0].size())
return 0;
else if(grid[x][y]==0||visited[x][y])
return 0;
else{
visited[x][y]=true;
return 1+maxAreaOfIsland(grid,visited,x,y+1)+maxAreaOfIsland(grid,visited,x+1,y)+maxAreaOfIsland(grid,visited,x,y-1)+maxAreaOfIsland(grid,visited,x-1,y);
}
}
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
int result=0;
int m=grid.size(),n=grid[0].size();
vector<vector<bool>> visited(m,vector<bool>(n,false));
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(grid[i][j]==1&&!visited[i][j])
result=max(result,maxAreaOfIsland(grid,visited,i,j));
return result;
}
};