lt1254. 统计封闭岛屿的数目
岛屿问题,dfs处理
const int N =107;
class Solution {
public:
int g[N][N];
int ans =0;
int a[4]={-1,0,1,0},b[4] ={0,1,0,-1};
int closedIsland(vector<vector<int>>& grid) {
memset(g,0,sizeof g );
int n = grid.size(),m =grid[0].size();
function<bool(int,int)> cc1 = [&](int i,int j){
if(i<0 || i>n-1 || j<0 || j>m-1)return false;
return true;
};
function<bool(int,int)> cc = [&](int i,int j){
if(!grid[i][j]&&(i<=0 || i>=n-1 || j<=0 || j>= m-1)) return false;
return true;
};
int f;
function<void(int,int)> ff = [&](int i,int j){
g[i][j] =1;
if(!cc(i,j))f =0;
for(int x =0;x<4;x++){
if(cc1(i+a[x],j+b[x]) &&(!g[i+a[x]][j+b[x]]) && !grid[i+a[x]][j+b[x]])ff(i+a[x],j+b[x]);
}
};
for(int i =1;i<n-1;i++)
for(int j =1;j<m-1;j++){
f =1;
if(!grid[i][j] && !g[i][j]){
ff(i,j);
if(f)ans++;
}
}
return ans;
}
};