695. 岛屿的最大面积
思路:就dfs,用falg记录已经搜过的地方
class Solution {
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
fill(flag[0], flag[0]+50*50, false);
res = 0;
int row=grid.size(), col=grid[0].size();
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
int square = 1;
if(grid[i][j]==1 && flag[i][j]==false){ //找到岛屿并且没有被访问过
dfs(grid, i, j, square);
res = max(res, square);
}
}
}
return res;
}
private:
bool flag[50][50];
int res;
vector<vector<int> > v = {{-1,0},{1,0},{0,-1},{0,1}};
void dfs(vector<vector<int>>& grid, int x, int y, int &square){
flag[x][y]=true;
for(int i=0;i<4;i++){
int new_x = x + v[i][0];
int new_y = y + v[i][1];
if(new_x>=0 && new_x<grid.size()
&&new_y>=0 && new_y<grid[0].size()
&& flag[new_x][new_y]==false && grid[new_x][new_y]==1){
square = square+1;
dfs(grid, new_x, new_y, square);
}
}
}
};