classSolution{public:staticconstexprint dx[4]={0,0,1,-1};staticconstexprint dy[4]={1,-1,0,0};int res;intislandPerimeter(vector<vector<int>>& grid){int m = grid.size(), n = grid[0].size();for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(grid[i][j]==1){
res +=dfs(grid, i, j);}}}return res;}intdfs(vector<vector<int>>& grid,int x,int y){int m = grid.size(), n = grid[0].size();if(x <0|| x >= m || y <0|| y >= n || grid[x][y]==0)return1;if(grid[x][y]==2)// 防止重复遍历return0;
grid[x][y]=2;int ans =0;for(int i =0; i <4; i++){
ans +=dfs(grid, x+dx[i], y+dy[i]);}return ans;}};