海岸线长度
描述
给定一个 m x n 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。
计算所有由陆地形成的岛屿的海岸线总长度。
输入
grid = [[ ...]]
是 m x n 的 int 型二维数组
m == grid.length
n == grid[i].length
1 <= m, n <= 100
grid[i][j]的值为'0'或'1'
输出
输出一个整数,表示岛屿的周长。
如:grid =
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0]]
周长为16
在这道深度优先算法题目零我的代码如下所示:
int solve(int** grid, int m, int n) {
int land=0,border=0;//土地数量,接壤边的条数
int i,j,k;
for(i=0;ifor(j=0;jif(grid[i][j]==1){
land++;
if(grid[i+1][j]==1&&i+1//该土地的下方有土地就说明下面这条边就是接壤边
if(grid[i][j+1]==1&&j+1//该土地的右方有土地就说明右面这条边就是接壤边
}
}
}
k=4*land-2*border;
return k;
}
题目的思路是利用岛屿数量与接壤边的关系来解答,
如一块陆地的周长是4;如果接壤其他陆地则结果为42=8再减去接壤边数,即12;答案结果为6;
但在oj中却运行错误,完全不知道错在哪里欸。
只要帮忙改改代码就好。