python一行代码迷宫_通过Python代码实现走迷宫的方法
#用来判断坐标是否合法
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代码实现走迷宫的方法相关推荐
- 信息学奥赛一本通 1252:走迷宫 | OpenJudge NOI 2.5 2753:走迷宫
[题目链接] ybt 1252:走迷宫 OpenJudge NOI 2.5 2753:走迷宫 [题目考点] 1. 广搜 迷宫问题 [解题思路] 设结构体类型的结点保存位置以及步数,队列中保存的是该结构 ...
- 【算法】机器人走迷宫破壁解法(适用于走迷宫、最短路径算法)-20200412
标题:机器人走迷宫破壁解法(适用于走迷宫.最短路径算法)-20200412 问题描述: 一块矩形方格,含有障碍和可通行格子,求从某一点到另外一点的最短距离?N*M的矩阵: 其中,1代表障碍,0代表可通 ...
- python用一行代码画个迷宫_用 Python 制作一个迷宫游戏
相信大家都玩过迷宫的游戏,对于简单的迷宫,我们可以一眼就看出通路,但是对于复杂的迷宫,可能要仔细寻找好久,甚至耗费数天,然后可能还要分别从入口和出口两头寻找才能找的到通路,甚至也可能找不到通路. 虽然 ...
- python迷宫万花筒代码_用Python3写一个走迷宫的小程序(图形化:matplotlib,dfs,prim)...
先看一下动态效果图(慢放): 首先生成迷宫: 主要用了两个算法:Prim和dfs 总结:Prim生成的比较像真正的迷宫,所以默认用了Prim生成迷宫 先输入n,m,会生成一个迷宫(prim生成),然后 ...
- python函数增强代码可读性_如何提高代码的可读性 学习笔记
本文整理自 taowen 师傅在滴滴内部的分享. 1.Why 对一线开发人员来说,每天工作内容大多是在已有项目的基础上继续堆代码.当项目实在堆不动时就需要寻找收益来重构代码.既然我们的大多数时间都花在 ...
- python登录代码思路_用python登录Dr.com思路以及代码分享
用python登录Dr.com思路以及代码分享 发布于 2014-08-28 22:31:52 | 192 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...
- python是非常依赖于已编译完成的代码吗_初识Python的几点疑惑
一.python是什么? Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991 ...
- python画折线图代码实现_用Python画论文折线图、曲线图?几个代码模板轻松搞定!...
前言 这几天在搞论文图,唉说实话抠图这种东西真能逼死人.坐在电脑前抠上一天越看越丑,最后把自己丑哭了-- 到了画折线图分析的时候,在想用哪些工具的时候.首先否决了excel,读书人的事,怎么能用exc ...
- python基础教程微信_用Python实现让微信地球转起来附代码!
微信地球 手机重启后打开微信的一瞬间,会看到一幅有名的图片. 大概是站在月亮上看地球的效果. 你有没有想过,如果上面那个地球转起来会是怎样? 素材 这里有两个表面素材,一个是地球表面素材,一个是云图素 ...
最新文章
- 《Apache Kafka》学习笔记
- linux创建mysql视图_MySQL视图基本操作
- 13---Net基础加强
- tableau实战系列(三十)- 多细节层次(LOD) 计算产品销售周期延申表达式详解
- ubuntu tail、history|grep 、alias命令
- 腾讯游戏数据应用微服务实战
- 【定时同步系列4】QPSK调制+OM定时(FFT实现及频域补偿)+信号分段处理+误码率曲线之MATLAB仿真(复信号模型)
- Linux加密框架 crypto算法模板 以及HMAC算法模板实例
- 14位顶级哲学家对生命的经典感悟!若能领悟受益终生!
- jQuery 教程01——jQuery安装
- JS一秒区分clientX,offsetX,screenX,pageX之间关系
- ArcView GIS 应用与开发技术(9)- 创建空间数据
- SVN客户端安装详细教程
- 巧用主力进出、主力买卖指标进行波段操作——逃顶和抄底
- 抖音SEO优化:最详细抖音视频SEO教程
- 乐动机器人 2D DTOF激光雷达 LD06、LD19驱动包开源仓库分享
- 南邮 OJ 1076 机器狗组装费用
- 工具“正确”打开方式——如何用notion来谈恋爱
- for循环 for循环嵌套
- 【解决方案】国标GB28181协议视频智能分析平台打造智慧企业AR云景解决方案
热门文章
- Postgres访问其他PostgresQL数据库的功能DBLINK
- 开发部考核管理制度 随想
- killall 后面信号_Linux killall命令及信号
- linux允许所有用户执行文件夹,在Linux中,可以使用命令()针对文件newfiles.txt为所有用户添加执行权限。...
- 计算机文化基础第三版龙天才课后答案,龙天才
- android弹窗闪退,[Android 小记] PopupWindow中放置Spinner 点击直接闪退的问题分析
- 二级c语言需要知道的知识点,2020年全国计算机二级C语言复习知识点:C语言基本知识(...
- 信息学奥赛一本通(1197:山区建小学)
- Factors of Factorial(AtCoder-2286)
- 一元三次方程求解(信息学奥赛一本通-T1238)