方法:深度优先搜索
dfs每个1旁边的4个单位,利用递归函数统计最大面积
class Solution {
private:int visited[60][60],dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
int row=grid.size(),column=grid[0].size(),max_area=0;
for(int i=0;i<row;i++)
for(int j=0;j<column;j++)
if(!visited[i][j]&&grid[i][j]==1)
max_area=max(dfs(grid,i,j),max_area);//更新最大面积
return max_area;
}
int dfs(vector<vector<int>>& grid,int x,int y){
int row=grid.size(),column=grid[0].size(),area=1;
visited[x][y]=1;
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(0<=nx&&nx<row&&0<=ny&&ny<column&&!visited[nx][ny]&&grid[nx][ny]==1)
area+=dfs(grid,nx,ny);//统计面积
}
return area;
}
};