leetcode- 695. 岛屿的最大面积
题目
代码
#include <iostream>
#include <vector>
using namespace std;
int res = 0;
void dfs(vector<vector<int> > &grid, int i, int j){
int m = grid.size();
int n = grid[0].size();
res++;
grid[i][j] = 0;
if(i - 1 >= 0 && grid[i - 1][j] == 1){
dfs(grid, i - 1, j);
}
if(i + 1 < m && grid[i + 1][j] == 1){
dfs(grid, i + 1, j);
}
if(j - 1 >= 0 && grid[i][j - 1] == 1){
dfs(grid, i, j - 1);
}
if(j + 1 < n && grid[i][j + 1] == 1){
dfs(grid, i, j + 1);
}
}
int maxAreaOfIsland(vector<vector<int> >& grid) {
int m = grid.size();
if(m == 0){
return 0;
}
int n = grid[0].size();
int count = 0;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if(grid[i][j] == 1){
dfs(grid, i, j);
count = max(res, count);
res = 0;
}
}
}
return count;
}
int main(){
int m, n, res;
cin>>m>>n;
vector<vector<int> > grid(m, vector<int>(n));
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
cin>>grid[i][j];
}
}
res = maxAreaOfIsland(grid);
cout<<res;
return 0;
}