简单迷宫问题

迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老鼠经过多次试验终于得到它学习走通迷宫的路线。设计一个计算机程序对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
数组元素值为1表示该位置是墙壁,不能通行;元素值为0表示该位置是通路。假定从mg[1][1]出发,出口位于mg[n][m]

用一种标志在二维数组中标出该条通路,并在屏幕上输出二维数组。

m=[[1,1,1,0,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,1,1],[1,0,1,1,1,1,1,0,0,1],[1,0,1,0,0,0,0,1,0,1],[1,0,1,0,1,1,0,0,0,1],[1,0,0,1,1,0,1,0,1,1],[1,1,1,1,0,0,0,0,1,1],[1,0,0,0,0,1,1,1,0,0],[1,0,1,1,0,0,0,0,0,1],[1,1,1,1,1,1,1,1,1,1]]
sta1=0;sta2=3;fsh1=7;fsh2=9;success=0
def LabyrinthRat():print('显示迷宫:')for i in range(len(m)):print(m[i])print('入口:m[%d][%d]:出口:m[%d][%d]'%(sta1,sta2,fsh1,fsh2))if (visit(sta1,sta2))==0:	print('没有找到出口')else:print('显示路径:')for i in range(10):print(m[i])
def visit(i,j):m[i][j]=2global successif(i==fsh1)and(j==fsh2): success=1if(success!=1)and(m[i-1][j]==0): visit(i-1,j)if(success!=1)and(m[i+1][j]==0): visit(i+1,j)if(success!=1)and(m[i][j-1]==0): visit(i,j-1)if(success!=1)and(m[i][j+1]==0): visit(i,j+1)if success!=1: m[i][j]=3return success
LabyrinthRat()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt超强绘图控件qwt - 安装及配置

qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是…

BFPRT

在一大堆数中求其前k大或前k小的问题,简称TOP-K问题。而目前解决TOP-K问题最有效的算法即是BFPRT算法,其又称为中位数的中位数算法,该算法由Blum、Floyd、Pratt、Rivest、Tarjan提出,最坏时间复杂度为O(n)O(n)。 读者要会快速排序…

180°舵机的使用步骤

一.步骤 1.首先查看舵机的运行参数,包括工作的电压和电流,转1(60)需要的脉宽是多少。 2.根据舵机提供的参数,算出需要的PWM的周期和脉宽的范围。 3.通过单片机或者其他数字电路产生相应的PWM波,便可以驱…

Qt开源项目

图像处理: Krita digikam inkscape 编辑器: LiteIDE QDevelper KDeveloper Monkey Studio TeXstudio 绘图: ZeGrapher QtiPlot qcustomplot QWT HotShots Inkscape 三维建模: QCAD FreeCAD OpenModelica LibreCAD 音乐&#xff1a…

使用Python作为计算器

数值 1.python支持基本的数学运算符,而且应用python你可以像写数学公式那样简单明了。 eg: >>> 2 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5 # division always returns a floating point number 1.6 2.除法…

java整体打印二叉树

一个调的很好的打印二叉树的代码。 用空格和^v来表示节点之间的关系。 效果是这样: Binary Tree: v7v v6v ^5^ H4H …

前缀树

是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符…

学习4层板设计

今天是第一天尝试设计四层PCB板,以前只画过双层板,所以今天花了好多时间来熟悉多层板的设计方法,现在做一下整理,也方便其他同胞少走弯路~~~我用的软件是Altium Designer 6(AD6)步骤如下: 1、随…

PCB设计的基本步骤

一.方案的设计 1.与客户沟通,确定电路的功能和相关设计指标(如:电源,功耗等)。 2.画出项目的硬件功能框图。 3.设计出多种方案,并对多种方案进行对比,最终选出最合适的方案。 4.根据上述所…

堆应用例题三连

一个数据流中,随时可以取得中位数。 题目描述:有一个源源不断地吐出整数的数据流,假设你有足够的空间来保存吐出的数。请设计一个名叫MedianHolder的结构,MedianHolder可以随时取得之前吐出所有树的中位数。 要求: 1…

HistCite 的使用方法

摘要 读文献自然要读精品,在面对一个陌生领域,如何才能以最快速度定位精品文献呢?本文将详细介绍 HistCite 的使用方法,结合 Web of Science 和 Endnote ,演示如何在几个小时之内,对某个陌生领域的文献进行…

数组基操三连(2)

转圈打印矩阵 题目: 给定一个整型矩阵matrix,请按照转圈的方式打印它。例如:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,打印结果为:1,2,3,4,5,12,16,15,14,13,9,5,6,7,11,10 要求: 额外空间复杂度为O(1&a…

数据结构课上笔记7

介绍栈和队列基本概念和用法。 设输入序列1、2、3、4,则下述序列中( )不可能是出栈序列。【中科院中国科技大学2005】 A. 1、2、3、4 B. 4、 3、2、1 C. 1、3、4、2 D.4、1、2、3 选…

ROC曲线与AUC值

ROC曲线与AUC值 1.概述AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个标准。这样的标准其实有很多,例如:大约10年前在machine learning文献中一统天下的标准:分类精度;在信息检索(IR)领域中常…

设置SSH免密码自动登录(使用别名)

每次登录服务器都要写一大串的用户名(username服务器地址)和登录密码十分的繁琐,所以本文就告诉大家如何通过修改配置文件,达到只需要输入:ssh jack(你起的别名)就可以一键登录到服务器中。 1.创建公钥(相当…

串的定长表示

思想和代码都不难&#xff0c;和线性表也差不多&#xff0c;串本来就是数据受限的线性表。 串连接&#xff1a; #include <stdio.h> #include <string.h> //串的定长顺序存储表示 #define MAXSTRLEN 255 //用户可在255以内定义最大串长 typedef unsigned cha…

周志华《Machine Learning》 学习笔记系列(1)--绪论

机器学习致力于研究如何通过计算手段&#xff0c;利用经验来改善系统本身的性能&#xff0c;在计算机系统中&#xff0c;“经验”通常是以“数据”形式存在的&#xff0c;所以&#xff0c;机器学习的主要内容是关于在计算机上从数据中产生“模型”的算法&#xff0c;即学习算法…

轻松理解牛顿迭代法且用其求平方根

牛顿迭代法概述 牛顿迭代法&#xff08;Newton’s method&#xff09;又称为牛顿-拉弗森方法&#xff08;Newton-Raphson method&#xff09;&#xff0c;它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 牛顿迭代公式 设rrr是f(x)0f(x)0f(x)0的根&#…

map+DP leetcode446

如果数字序列由至少三个元素组成并且任何两个连续元素之间的差异相同&#xff0c;则称为算术序列。 例如&#xff0c;这些是算术序列&#xff1a; 1&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;9 7&#xff0c;7,7&#xff0c;7 3&#xff0c;-1&#xff0c;-5&am…

如何使用cookie信息,完成自动登录

在做爬虫任务的时候&#xff0c;我们常常会遇到很多网页必须登录后&#xff0c;才可以开放某些页面。所以登录是爬取网页的第一步。但是&#xff0c;通过post表单&#xff08;包含用户名和密码&#xff09;的方法&#xff0c;对于那些不需要输入比较复杂的验证码的网页&#xf…