美文网首页
给定一个M*N的格子或棋盘,给定一个在格子内部的小球,小球坐标(

给定一个M*N的格子或棋盘,给定一个在格子内部的小球,小球坐标(

作者: Choara | 来源:发表于2018-03-19 21:52 被阅读0次
    image.png

    假设二维坐标内,左下角的第一个格子是(1,1),把棋盘的右上角看做二维坐标(M,N),用 f(m,n,i,j,s)表示小球初始坐标在(i,j),在步长s内,走出m*n的格子的走法总数,f(i,j)=f(m, n, i ,j - 1, s - 1) + f(m, n, i-1, j, s - 1) +f(m, n, i + 1, j, s - 1) + f(m, n, i, j + 1, s - 1)。

     * 递归求解
     * @return
     */
    private static int process(int m, int n, int i, int j, int s) {
        if (i < 1 && s >= 0) {
            return 1;
        }
        if (j < 1 && s >= 0) {
            return 1;
        }
        if (i > m && s >= 0) {
            return 1;
        }
        if (j > n && s >= 0) {
            return 1;
        }
        if (s == 0) {
            return 0;
        }
        return process(m, n, i ,j - 1, s - 1) + process(m, n, i-1, j, s - 1) + 
                process(m, n, i + 1, j, s - 1) + process(m, n, i, j + 1, s - 1);
    }
    

    相关文章

      网友评论

          本文标题:给定一个M*N的格子或棋盘,给定一个在格子内部的小球,小球坐标(

          本文链接:https://www.haomeiwen.com/subject/ljdmqftx.html