You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python代码实现n×n网格按规则移动的路径计数功能

原代码存在的问题
  • 开头强行把传入的x、y坐标赋值为given_map[0][0],每次进入函数都会重置坐标,完全丢失了当前位置参数,递归逻辑从根上就不成立
  • 终止条件判断错误:n×n矩阵的终点坐标是len(given_map)-1,不是len(given_map),后者已经属于越界范围
  • 完全没实现移动规则:既没有按当前单元格数值计算步长,也没有区分向右、向下两个移动方向,所有递归分支都直接传入原x、y参数,会直接触发死循环
  • 没有累加两个移动方向的路径数,完全不具备路径统计能力
修复后的实现
def path(given_map, x, y):
    n = len(given_map)
    # 越界直接返回0,不计入有效路径
    if x >= n or y >= n:
        return 0
    # 到达终点返回1,计数+1
    if x == n - 1 and y == n - 1:
        return 1
    step = given_map[x][y]
    # 非终点位置步长为0的话无法移动,直接返回0
    if step == 0:
        return 0
    # 累加向右、向下两个方向的路径总数
    return path(given_map, x + step, y) + path(given_map, x, y + step)

if __name__ == '__main__':
    input_map = [[1,2,9,4,9],
                 [1,5,8,7,9], 
                 [9,3,9,9,2], 
                 [2,3,7,5,9], 
                 [1,9,9,1,0]]
    print(path(input_map, 0, 0))

    input_map = [[1,1,2], 
                 [1,2,2], 
                 [1,2,0]]
    print(path(input_map, 0, 0))
运行输出
2
2

内容的提问来源于stack exchange,提问作者user17315266

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:45:09