小学生蓝桥杯Python闯关 | 回家的路

Posted COCOgsta

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小学生蓝桥杯Python闯关 | 回家的路相关的知识,希望对你有一定的参考价值。

学习Python从娃娃抓起!记录下蓝桥杯Python学习和备考过程中的题目,记录每一个瞬间。

附上汇总贴:小学生蓝桥杯Python闯关 | 汇总_COCOgsta的博客-CSDN博客


【题目描述】

小 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 = 0


def 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 False


ret = road(N - 1, M - 1)
print(cnt)
复制代码

【运行结果】

3 4
1 0 1 1
1 1 1 1
1 1 1 1
4

以上是关于小学生蓝桥杯Python闯关 | 回家的路的主要内容,如果未能解决你的问题,请参考以下文章

小学生蓝桥杯Python闯关 | 密码创建

小学生蓝桥杯Python闯关 | 回文日期

小学生蓝桥杯Python闯关 | 纯质数

小学生蓝桥杯Python闯关 | 移动方格

小学生蓝桥杯Python闯关 | 健康判断

小学生蓝桥杯Python闯关 | 数的性质