典型的递归题。DFS,没啥好说的。
class Solution {
public:
int recursive(vector<vector<int>>& grid,int x,int y)
{
int m=grid.size();
int n=grid[0].size();
int count=1;
int top=0,bottom=0,left=0,right=0;
grid[x][y]=0;
if(x>=1){
top=grid[x-1][y];
if(top)
count+=recursive(grid,x-1,y);
}
if(x<m-1){
bottom=grid[x+1][y];
if(bottom)
count+=recursive(grid,x+1,y);
}
if(y>=1){
left=grid[x][y-1];
if(left)
count+=recursive(grid,x,y-1);
}
if(y<n-1){
right=grid[x][y+1];
if(right)
count+=recursive(grid,x,y+1);
}
return count;
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
int result=0;
for(int i=0;i<grid.size();i++)
{
for(int j=0;j<grid[0].size();j++)
{
int value=grid[i][j];
if(!value)
continue;
else
{
int temp=recursive(grid,i,j);
result = result>temp?result:temp;
}
}
}
return result;
}
};