深度优先算法的岛屿周长问题

海岸线长度
描述

给定一个 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中却运行错误,完全不知道错在哪里欸。
只要帮忙改改代码就好。