回家的路
题目描述
小 Z 家所在的街道都是横平竖直的,从空中俯视看,非常像一张方格表,由 n 行m 列的方格组成 ,而小 Z 此刻正站在最左上角的格子中,想走回到最右下角的家中,他每次只能往右或者往下走一个格子,毕竟不能走回头路。 由于小 Z 家附近在修路,就导致有些格子还不能走。 好在小 Z 手上有一份地图,标注了哪些格子能走,哪些格子不能走。现在请你帮小 Z 算算他这次回家一共有多少种走法吧~
输入描述
共 n + 1 行,
第 1 行为 2 个正整数 n、m,用空格隔开,表示方格表的行数和列数;
第 2 ~ n+1 行为地图,每行为 m-1 个用空格隔开的正整数 0 或 1,0 表示不能走,1 表示能走。
输出描述
一行,一个数,表示小 Z 回家可选的路线总数。
样例输入
3 4
1 0 1 1
1 1 1 1
1 1 1 1
样例输出
4
代码详解
展开查看
matrix = input().split(" ") N = int(matrix[0]) M = int(matrix[1]) res = [] times = [] for i in range(int(N)): ans = input().split(" ") res.append(ans) cnt = 0def road(x, y): global cnt if x < 0 or y < 0 or int(res[N - 1 - x][M - 1 - y]) == 0: return False if x == 0 and y == 0: cnt += 1 return False if (road(x - 1, y) or road(x, y - 1)): return True return Falseret = road(N - 1, M - 1) print(cnt)
运行结果
展开查看
3 4 1 0 1 1 1 1 1 1 1 1 1 1 4