CodeCombat计算机科学6.14脆弱的迷宫

您所在的位置:网站首页 codecombat答案 CodeCombat计算机科学6.14脆弱的迷宫

CodeCombat计算机科学6.14脆弱的迷宫

2023-12-13 04:32| 来源: 网络整理| 查看: 265

计算机科学6.14脆弱的迷宫

在这里插入图片描述 这一关终于可以用递归解决问题了, 什么你不太懂递归,那可以先试试循环。 下面是我先讲讲用循环的思路: hero想要到达出口,可以去循环“右-上-左”这样的一个组合命令 或者去循环“上-右-左”这样的组合 什么意思呢? 能不能换其他组合?

1、为什么是“右-上-左”/“上-右-左”策略

首先我们的目标在右上方 思考1:如果这些道路上没有障碍,我们怎样能最快到达右上角?

要么“一路向右,到达最右边不能再继续后,在向上走” 要么“一路向上,到达最上边不能再继续后,在向右走”

但这里,走到某个节点可能会有一些障碍,怎么办呢?

策略1:"右-上"走不通,可以向左走去探探路

2、hero总要走回头路怎么办?

在这里插入图片描述 问题1:在(2,5)处,如果再次重复“右上左",那么hero就一直在           (2.5)-(2,6)中间迂回,陷入超时无法完成的状态 思考2:从(2.6)到(2,5)此时如何跳过“向右走”,避免走回头路? 策略2:是否我们可以为走过的点做一个标记

每次走向下一个目标之前,去判断一下它是不是无标记的

如果无标记,那么说明没走过,可以继续 如果有标记,说明已经走过,跳过这个方向

思考3:这个思路用编程如何实现? 策略3:我们可以把这对应的“标记”放在二维数组对应的位置存储

好,接下来构建二维数组record[][] 还记得在上一关卡中,二维数组的构建方法吗? 6.13脆弱的迷宫跳转链接 这一关路线那么整齐,比黄金选择中的行列清晰多了 如果还没有很好掌握python构造二维数组的方法,大家可以回去看我的上一篇帖子! 左下角的起点设为record[0][0]

record = [[0] *7 for i in range (7)]

那么他的[row][col]怎么设置呢? 强调:一定要用int()

col=int(hero.pos.x-18)/distanceBetweenRooms row=int(hero.pos.y-19)/distanceBetweenRooms

这下,循环转起来吧!

while True: while hero.isPathClear(hero.pos, { "x": hero.pos.x+ distanceBetweenRooms , "y": hero


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3