
class Solution {
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
int hh=grid.size();//行
int ll=grid[0].size();//列
if(hh==0)
return 0;
int ans=0,res=0;
for(int i=0;i<hh;i++)
{
for(int j=0;j<ll;j++)
{
if(grid[i][j]==1)
{
ans=0;
dfs(grid,i,j,ans);
res=max(res,ans);
}
}
}
return res;
}
void dfs(vector<vector<int>>& grid,int h,int l,int &ans)
{
int hh=grid.size();//行
int ll=grid[0].size();//列
grid[h][l]=0;//走过就变成0,防止下次还走
ans++;//找到符合的加一个
//垂直方向上下左右走,且判断搜的时候会不会出边界
if(h-1>=0&&grid[h-1][l]==1) //行-1,向上搜
dfs(grid,h-1,l,ans);
if(h+1<hh&&grid[h+1][l]==1) //行+1,向下搜
dfs(grid,h+1,l,ans);
if(l-1>=0&&grid[h][l-1]==1) //列-1,向左走
dfs(grid,h,l-1,ans);
if(l+1<ll&&grid[h][l+1]==1) //列+1,向右走
dfs(grid,h,l+1,ans);
}
};