description
从前有一只小小的机器人叫小器,小器站在一个M*N的格子地板的最左上角,很孤单,世界辣么大,它也想去看看,经过不懈的努力它终于可以(只能)向下或者向右移动啦,它有一个宏伟的愿望就是要穿过格子地板到达右下角的砖,所以如果小器告诉你M和N,你能不能帮它计算一下这中间可以有多少条独一无二的路径?
注意:这是一道OJ题目,请用两个input("")分别获得M和N的值。
输入
3
3
输出
6
code
- 使用dfs深度优先进行遍历,走到终点则路径+1
- 代码:
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
- 注意python中二维数组的创建方式python 创建二维数组