#用来判断坐标是否合法

def check_valid(mg, x, y):

if x >= 0 and x < len(mg) and y >= 0 and y < len(mg[0]) \

and mg[x][y] == 1:

return True

else:

return False

#迷宫结果优化

def process(step):

# 先识别哪些无路可走的点的下一个点

change_records = []

for i in range(len(step) - 1):

if (abs(step[i][0] - step[i + 1][0]) == 0 and abs(step[i][1] - step[i + 1][1]) == 1) or \

(abs(step[i][0] - step[i + 1][0]) == 1 and abs(step[i][1] - step[i + 1][1]) == 0):

pass

else:

change_records.append(i + 1)

#print(change_records)

# 然后根据这些点识别出这个点的最远回退点

clip_nums = []

for i in change_records:

for j in range(i):

if (abs(step[j][0] - step[i][0]) == 0 and abs(step[j][1] - step[i][1]) == 1) or \

(abs(step[j][0] - step[i][0]) == 1 and abs(step[j][1] - step[i][1]) == 0):

break

clip_nums.append((j, i))

#print(clip_nums)

# 注意回退点之间的包含关系, 逆序处理, 是为了规避顺序对列表进行处理后下标偏移的问题

record = []

for i in clip_nums[::-1]:

if not (i[0] in record or i[1] in record):

step = step[:i[0] + 1] + step[i[1]:]

record += list(range(i[0], i[1]))

print(step)

step = []

def walk(mg, x, y):

global step

if x == 0 and y == 0:

step.append((x, y))

process(step)

print("Walk success!")

sys.exit()

if check_valid(mg, x, y):

step.append((x, y))

mg[x][y] = 2

walk(mg, x, y+1)

walk(mg, x, y-1)

walk(mg, x-1, y)

walk(mg, x+1, y)

mg = [[1, 0, 1, 1, 1, 0],

[1, 1, 1, 0, 1, 1],

[0, 0, 0, 1, 0, 1],

[0, 1, 1, 1, 0, 1],

[0, 1, 0, 1, 1, 1],

[1, 1, 1, 0, 0, 0]]

walk(mg, 5, 0)# 从5, 0这个点开始走迷宫, 出口为0, 0

python一行代码迷宫_通过Python代码实现走迷宫的方法相关推荐

  1. 信息学奥赛一本通 1252:走迷宫 | OpenJudge NOI 2.5 2753:走迷宫

    [题目链接] ybt 1252:走迷宫 OpenJudge NOI 2.5 2753:走迷宫 [题目考点] 1. 广搜 迷宫问题 [解题思路] 设结构体类型的结点保存位置以及步数,队列中保存的是该结构 ...

  2. 【算法】机器人走迷宫破壁解法(适用于走迷宫、最短路径算法)-20200412

    标题:机器人走迷宫破壁解法(适用于走迷宫.最短路径算法)-20200412 问题描述: 一块矩形方格,含有障碍和可通行格子,求从某一点到另外一点的最短距离?N*M的矩阵: 其中,1代表障碍,0代表可通 ...

  3. python用一行代码画个迷宫_用 Python 制作一个迷宫游戏

    相信大家都玩过迷宫的游戏,对于简单的迷宫,我们可以一眼就看出通路,但是对于复杂的迷宫,可能要仔细寻找好久,甚至耗费数天,然后可能还要分别从入口和出口两头寻找才能找的到通路,甚至也可能找不到通路. 虽然 ...

  4. python迷宫万花筒代码_用Python3写一个走迷宫的小程序(图形化:matplotlib,dfs,prim)...

    先看一下动态效果图(慢放): 首先生成迷宫: 主要用了两个算法:Prim和dfs 总结:Prim生成的比较像真正的迷宫,所以默认用了Prim生成迷宫 先输入n,m,会生成一个迷宫(prim生成),然后 ...

  5. python函数增强代码可读性_如何提高代码的可读性 学习笔记

    本文整理自 taowen 师傅在滴滴内部的分享. 1.Why 对一线开发人员来说,每天工作内容大多是在已有项目的基础上继续堆代码.当项目实在堆不动时就需要寻找收益来重构代码.既然我们的大多数时间都花在 ...

  6. python登录代码思路_用python登录Dr.com思路以及代码分享

    用python登录Dr.com思路以及代码分享 发布于 2014-08-28 22:31:52 | 192 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...

  7. python是非常依赖于已编译完成的代码吗_初识Python的几点疑惑

    一.python是什么? Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991 ...

  8. python画折线图代码实现_用Python画论文折线图、曲线图?几个代码模板轻松搞定!...

    前言 这几天在搞论文图,唉说实话抠图这种东西真能逼死人.坐在电脑前抠上一天越看越丑,最后把自己丑哭了-- 到了画折线图分析的时候,在想用哪些工具的时候.首先否决了excel,读书人的事,怎么能用exc ...

  9. python基础教程微信_用Python实现让微信地球转起来附代码!

    微信地球 手机重启后打开微信的一瞬间,会看到一幅有名的图片. 大概是站在月亮上看地球的效果. 你有没有想过,如果上面那个地球转起来会是怎样? 素材 这里有两个表面素材,一个是地球表面素材,一个是云图素 ...

最新文章

  1. 《Apache Kafka》学习笔记
  2. linux创建mysql视图_MySQL视图基本操作
  3. 13---Net基础加强
  4. tableau实战系列(三十)- 多细节层次(LOD) 计算产品销售周期延申表达式详解
  5. ubuntu tail、history|grep 、alias命令
  6. 腾讯游戏数据应用微服务实战
  7. 【定时同步系列4】QPSK调制+OM定时(FFT实现及频域补偿)+信号分段处理+误码率曲线之MATLAB仿真(复信号模型)
  8. Linux加密框架 crypto算法模板 以及HMAC算法模板实例
  9. 14位顶级哲学家对生命的经典感悟!若能领悟受益终生!
  10. jQuery 教程01——jQuery安装
  11. JS一秒区分clientX,offsetX,screenX,pageX之间关系
  12. ArcView GIS 应用与开发技术(9)- 创建空间数据
  13. SVN客户端安装详细教程
  14. 巧用主力进出、主力买卖指标进行波段操作——逃顶和抄底
  15. 抖音SEO优化:最详细抖音视频SEO教程
  16. 乐动机器人 2D DTOF激光雷达 LD06、LD19驱动包开源仓库分享
  17. 南邮 OJ 1076 机器狗组装费用
  18. 工具“正确”打开方式——如何用notion来谈恋爱
  19. for循环 for循环嵌套
  20. 【解决方案】国标GB28181协议视频智能分析平台打造智慧企业AR云景解决方案

热门文章

  1. Postgres访问其他PostgresQL数据库的功能DBLINK
  2. 开发部考核管理制度 随想
  3. killall 后面信号_Linux killall命令及信号
  4. linux允许所有用户执行文件夹,在Linux中,可以使用命令()针对文件newfiles.txt为所有用户添加执行权限。...
  5. 计算机文化基础第三版龙天才课后答案,龙天才
  6. android弹窗闪退,[Android 小记] PopupWindow中放置Spinner 点击直接闪退的问题分析
  7. 二级c语言需要知道的知识点,2020年全国计算机二级C语言复习知识点:C语言基本知识(...
  8. 信息学奥赛一本通(1197:山区建小学)
  9. Factors of Factorial(AtCoder-2286)
  10. 一元三次方程求解(信息学奥赛一本通-T1238)