c 实现走迷宫流程图_面试算法系列-走迷宫

题目背景

shopee的办公室非常大,小虾同学的位置坐落在左下角,而大门却在右上角,可以把所有位置抽象为一个网格(门口的坐标为0,0),小虾同学很聪明,每次只向上,或者向右走,因为这样最容易接近目的地,但是小虾同学不想让自己的boss们看到自己经常在他们面前出没,或者迟到被发现。他决定研究一下如果他不通过boss们的位置,他可以有多少种走法?

2a0f9e0b3eb5554faf6c091fe50d998b.png

解析思路

本题可以看做是走迷宫游戏,将办公室想象成一个巨大方形网格,每个网格都可以用(x,y)坐标标识。可以看做从起点到终点有多少条路径可走,同时还要避免碰到障碍物。我们可以用动态规划的思想来解答,下面是我用Python3 代码实现的案例,以供分享。

可以参考下图加深理解

7942c7fc9d39dc01583b2bdbffe9cc7b.png
# 迷宫宽高ROW=4COL=4# 定义迷宫maze = [[0] * ROW for i in range(COL)]# 定义终点标识maze[0][COL-1] = 2# 定义boss位置 1,代表是bossmaze[0][1] = 1maze[2][2] = 1maze[3][2] = 1# 定义动作UP = -1RIGHT = 1# 定义可走路径集合,例如{"30":["30"]}PATH = {}PATH.setdefault(str(ROW-1)+"0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值