全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python基于递归算法实现的走迷宫问题

本文实例讲述了Python基于递归算法实现的走迷宫问题。分享给大家供大家参考,具体如下:

什么是递归?

简单地理解就是函数调用自身的过程就称之为递归

什么时候用到递归?

如果一个问题可以表示为更小规模的迭代运算,就可以使用递归算法。
迷宫问题:一个由0或1构成的二维数组中,假设1是可以移动到的点,0是不能移动到的点,如何从数组中间一个值为1的点出发,每一只能朝上下左右四个方向移动一个单位,当移动到二维数组的边缘,即可得到问题的解,类似的问题都可以称为迷宫问题。

在python中可以使用list嵌套表示二维数组。假设一个6*6的迷宫,问题时从该数组坐标[3][3]出发,判断能不能成功的走出迷宫。

maze=[[1,0,0,1,0,1],
   [1,1,1,0,1,0],
   [0,0,1,0,1,0],
   [0,1,1,1,0,0],
   [0,0,0,1,0,0],
   [1,0,0,0,0,0]]

针对这个迷宫问题,我们可以使用递归的思想很好的解决。对于数组中的一个点,该点的四个方向可以通过横纵坐标的加减轻松的表示,每当移动的一个可移动的点时候,整个问题又变为和初始状态一样的问题,继续搜索四个方向找可以移动的点,知道移动到数组的边缘。

所以我们可以这样编码:

# 判断坐标的有效性,如果超出数组边界或是不满足值为1的条件,说明该点无效返回False,否则返回True。
def valid(maze,x,y):
  if (x>=0 and x<len(maze) and y>=0 and y<len(maze[0]) and maze[x][y]==1):
    return True
  else:
    return False
# 移步函数实现
def walk(maze,x,y):
  # 如果位置是迷宫的出口,说明成功走出迷宫
  if(x==0 and y==0):
    print("successful!")
    return True
  # 递归主体实现
  if valid(maze,x,y):
    # print(x,y)
    maze[x][y]=2 # 做标记,防止折回
    # 针对四个方向依次试探,如果失败,撤销一步
    if not walk(maze,x-1,y):
      maze[x][y]=1
    elif not walk(maze,x,y-1):
      maze[x][y]=1
    elif not walk(maze,x+1,y):
      maze[x][y]=1
    elif not walk(maze,x,y+1):
      maze[x][y]=1
    else:
      return False # 无路可走说明,没有解 
  return True
walk(maze,3,3)

递归是个好东西呀!

PS:本站还有一个无限迷宫游戏,基于JS实现,提供给大家参考一下:

在线迷宫小游戏:
http://tools./games/migong

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。


# Python  # 递归算法  # 走迷宫  # python实现汉诺塔递归算法经典案例  # Python实例详解递归算法  # python3实现二叉树的遍历与递归算法解析(小结)  # python装饰器与递归算法详解  # 浅谈Python 递归算法指归  # python递归算法(无限递归  # 正常递归  # 阶乘)  # 递归  # 给大家  # 可以使用  # 值为  # 组中  # 进阶  # 边缘  # 是个  # 很好  # 相关内容  # 什么时候  # 无路可走  # 感兴趣  # 我们可以  # 数据结构  # 可以通过  # 上下左右  # 还有一个  # 一个问题  # 更多关于 


相关文章: 定制建站价位费用解析与套餐推荐全攻略  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何用虚拟主机快速搭建网站?详细步骤解析  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  长沙企业网站制作哪家好,长沙水业集团官方网站?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  如何在云虚拟主机上快速搭建个人网站?  微信小程序 五星评分(包括半颗星评分)实例代码  如何快速生成凡客建站的专业级图册?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  javascript基本数据类型及类型检测常用方法小结  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  已有域名如何快速搭建专属网站?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  怀化网站制作公司,怀化新生儿上户网上办理流程?  ,购物网站怎么盈利呢?  如何在IIS中新建站点并配置端口与物理路径?  如何在云服务器上快速搭建个人网站?  宝塔新建站点为何无法访问?如何排查?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  官网网站制作腾讯审核要多久,联想路由器newifi官网  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  如何用5美元大硬盘VPS安全高效搭建个人网站?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何在阿里云购买域名并搭建网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  做企业网站制作流程,企业网站制作基本流程有哪些?  内网网站制作软件,内网的网站如何发布到外网?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  简历在线制作网站免费版,如何创建个人简历?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  北京专业网站制作设计师招聘,北京白云观官方网站?  建站之星代理如何获取技术支持?  如何在西部数码注册域名并快速搭建网站?  建站主机如何安装配置?新手必看操作指南  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何用wdcp快速搭建高效网站?  建站之星导航菜单设置与功能模块配置全攻略  如何解决ASP生成WAP建站中文乱码问题?  学校建站服务器如何选型才能满足性能需求?  再谈Python中的字符串与字符编码(推荐)  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  高防服务器如何保障网站安全无虞?  实现虚拟支付需哪些建站技术支撑?  如何构建满足综合性能需求的优质建站方案? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。