1、题目描述
由0和1组成的二维矩阵表示水和陆地,返回最大的陆地面积。
2、思路
DFS,记录面积大小。
3、代码
int x[4]={0,0,-1,1};
int y[4]={-1,1,0,0};
int maxAreaOfIsland(vector<vector<int>>& grid) {
int n = grid.size();
if(n==0) return 0;
int m = grid[0].size();
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]==1){
int cnt = 0;
grid[i][j]=0;
dfs(grid,i,j,n,m,cnt);
if(cnt>ans)
ans=cnt;
}
}
}
return ans;
}
void dfs(vector<vector<int>>& grid, int a,int b,int n,int m,int &cnt){
cnt++;
for(int i=0;i<4;i++){
int x1 = a+x[i];
int y1 = b+y[i];
if(x1>=0&&x1<n&&y1>=0&&y1<m&&grid[x1][y1]==1){
grid[x1][y1]=0;
dfs(grid,x1,y1,n,m,cnt);
}
}
}