2.6 独一无二的路

description

从前有一只小小的机器人叫小器,小器站在一个M*N的格子地板的最左上角,很孤单,世界辣么大,它也想去看看,经过不懈的努力它终于可以(只能)向下或者向右移动啦,它有一个宏伟的愿望就是要穿过格子地板到达右下角的砖,所以如果小器告诉你M和N,你能不能帮它计算一下这中间可以有多少条独一无二的路径?
2.6 独一无二的路
注意:这是一道OJ题目,请用两个input("")分别获得M和N的值。

输入
3‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

3‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

输出
6

code

  1. 使用dfs深度优先进行遍历,走到终点则路径+1
  2. 代码:
row = eval(input())
line = eval(input())
couts = 0


def dfs(ls, x, y):
    global row, line, couts  # 说明全局变量
    if x == row-1 and y == line-1:
        couts += 1  # 走到终点,路径数量+1
        return
    else:
        # 向下
        if x+1 < row and ls[x+1][y] == 0:
            ls[x+1][y] = 1
            dfs(ls, x+1, y)
            ls[x+1][y] = 0  # 回溯,让下一条路径可以穿过
        # 向右
        if y+1 < line and ls[x][y+1] == 0:
            ls[x][y+1] = 1
            dfs(ls, x, y+1)
            ls[x][y+1] = 0


ls = [([0]*row)for i in range(line)]  # 声明二维数组
ls[0][0] = 1
dfs(ls, 0, 0)
print(couts)

# 3
# 3

summary

  1. 注意python中二维数组的创建方式python 创建二维数组
上一篇:centos进行dock安装


下一篇:Linux基础笔记