Leetcode-1031 Number of Enclaves(飞地的数量)

 1 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
 2 #define sz size()
 3 int dx[] = {0,0,1,-1};
 4 int dy[] = {1,-1,0,0};
 5 class Solution
 6 {
 7     public:
 8         void floodfill(vector<vector<int>>& A,int i,int j)
 9         {
10             A[i][j] = 0;
11             _for(k,0,4) 
12             {
13                 int nx = i+dx[k];
14                 int ny = j+dy[k];
15                 if(nx>=0&&ny>=0&&nx<A.size()&&ny<A[nx].size() && A[nx][ny]==1)
16                     floodfill(A,nx,ny);
17             }
18         }
19         int numEnclaves(vector<vector<int>>& A)
20         {
21             _for(i,0,A.sz)
22                _for(j,0,A[i].sz)
23                     if(A[i][j]==1 && (i==0||i==A.size()-1||j==0||j==A[i].size()-1))
24                         floodfill(A,i,j);
25 
26             int res = 0;
27             _for(i,0,A.sz)
28                _for(j,0,A[i].sz)
29                     if(A[i][j]==1)
30                         res ++;
31             return res;
32         }
33 };

flood fill

原文地址:https://www.cnblogs.com/Asurudo/p/10630810.html