https://leetcode.com/problems/max-area-of-island/discuss/
题目:求出最大的相邻的1的个数
思路:BFS
class Solution {
public:
int BFS(vector<vector<int>>& grid,int x,int y){
int lenx = grid.size() ,leny = grid[0].size();
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
struct Q{
int x;
int y;
};
Q q[2500];
int sum = 1;
q[0].x = x;
q[0].y = y;
grid[x][y]=0;
int l=0,r=1;
while(l < r){
Q temp = q[l];
for(int x1=0;x1<4;x1++){
temp.x = q[l].x + dir[x1][0];
temp.y = q[l].y + dir[x1][1];
if(temp.x < 0 || temp.y < 0 || temp.x >= lenx || temp.y >= leny || !grid[temp.x][temp.y]) continue;
q[r] = temp;
grid[temp.x][temp.y] = 0;
sum++;
r++;
}
l++;
}
return sum;
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
int max = 0;
int lenx = grid.size() ,leny = grid[0].size();
for(int x=0;x<lenx;x++){
for(int y=0;y<leny;y++){
if(grid[x][y]){
int sum = BFS(grid,x,y);
max = max > sum?max:sum;
}
}
}
return max;
}
};