走格子取数 -- Python

1. 无障碍的走格子/棋盘

'''
m*n无障碍的格子, 每次只能往右或者下走
dp[i][j]为到i,j这里有多少种走法
递推公式:
dp[i][j] = dp[i-1][j] + dp[i][j-1]

初始矩阵:
dp[0][j],dp[i][0]都为1
'''


def solution(m, n):
    dp = [[0] * (n) for i in range(m)]

    for i in range(m):
        for j in range(n):
            if i == 0 and j == 0:
                dp[i][j] = 1
            elif i == 0 and j > 0:
                dp[i][j] = 1
            elif i > 0 and j == 0:
                dp[i][j] = 1
            else:
                dp[i][j] = dp[i][j - 1] + dp[i - 1][j]
    print(dp)
    return dp[m - 1][n - 1]


if __name__ == '__main__':
    m, n = map(int, input().split())
    res = solution(m, n)
    print(res)

2. 有障碍的棋盘

后续补。。

note:

m*n矩阵从左上到右下一共是走格子取数 -- Python_第1张图片种方法。。

你可能感兴趣的:(python,数据结构)