nt g_row;
int g_col;
bool isInArea(int r, int c){if(r <0|| r >= g_row || c <0|| c >= g_col){returnfalse;}returntrue;}
int dfs(int** grid, int r, int c){
// 向任意方向,如果走出边界,那个方向的边要记入周长,所以+1
if(!isInArea(r, c)){return1;}
// 向任意方向,如果走到水域,那个方向的边要记入周长,所以+1
if(grid[r][c]==0){return1;}
// 向任意方向,如果走到相邻岛上,那个方向的边不记入周长,所以返回0
if(grid[r][c]!=1){return0;}
grid[r][c]=2; // 走过的岛屿做个记号
return dfs(grid, r + 1, c) +
dfs(grid, r - 1, c) +
dfs(grid, r, c + 1) +
dfs(grid, r, c - 1);}
int islandPerimeter(int** grid, int gridSize, int* gridColSize){
g_row = gridSize;
g_col = *gridColSize;for(int i =0; i < g_row; i++){for(int j =0; j < g_col; j++){if(grid[i][j]==1){return dfs(grid, i, j);}}}return0;}