走格子取数 -- Python

本文介绍了一种计算无障碍m*n棋盘从左上角到右下角所有可能路径数量的方法。通过动态规划算法,利用递推公式dp[i][j]=dp[i-1][j]+dp[i][j-1]来解决该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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矩阵从左上到右下一共是种方法。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值