题目:   迷宫是一个矩形区域,它有一个入口和一个出口。在迷宫的内部包含不能穿越的墙或障碍。在图5 - 8所示的迷宫中,障碍物沿着行和列放置,它们与迷宫的矩形边界平行。迷宫的入口在左上角,出口在右下角

以下是自己根据题目要求写的算法:

功能有:1 自动生成10*10迷宫图

2 判断是否有迷宫出口,并且画出路线图

/*******************迷宫算法程序**********************************/

# include

# include

# include

# include

# include

using namespace std;

bool Makework(int Sam[10][10]);//判断迷宫是否有出口

void main()

{

struct _timeb timebuffer;

_ftime(&timebuffer);

unsigned short int tem=timebuffer.millitm;

unsigned short int a=0;

srand(tem);

int quit=1;

int Mou[10][10];

while(quit==1)

{

for(int i=0;i<10;i++)

{

for(int c=0;c<10;c++)

{

Sleep(3);//延时达到完全随机数的效果

_ftime(&timebuffer);

tem=timebuffer.millitm;

srand(tem);

a=rand()%2;

if(rand()%6==1)//再次增加一个随机,增加空格。

{

a=0;

}

Mou[i][c]=a;

}

cout<

}

Mou[0][0]=0;

Mou[9][9]=0;

for(int e=0;e<10;e++)

{

for(int d=0;d<10;d++)

{

if(0==Mou[e][d])

{

cout<

}

else

{

cout<

}

}

cout<

}

cout<

if(Makework(Mou))

{

cout<

}

else

{

cout<

}

for(int o=0;o<10;o++)

{

for(int p=0;p<10;p++)

{

if(4==Mou[o][p])

{

cout<

}

else if(0==Mou[o][p])

{

cout<

}

else

{

cout<

}

}

cout<

}

cout<

cin>>quit;

}

}

bool Makework(int Sam[10][10])

{

int x=0,y=0;//x横y纵坐标Sam[y][x]

int U=-1,D=1,L=-1,R=1;//上下左右

list val;

list::iterator vben=val.begin();

list::iterator vend=val.end();

bool back=false;//是否是在后退,当前后左右都不能移动时。

while((9!=x)||(9!=y))//是否到达终点

{

if((y+D)<10)//下移动

{

if(Sam[y+D][x]==0)

{

Sam[y][x]=4;

if(back)//后退时有新的路线

{

Sam[y+D][x]=4;//新路线设置为新起点

back=false;

}

val.push_back(x);//坐标添加进容器

val.push_back(y);

y=y+D;//移动坐标

continue;

}

}

if((x+R)<10)//右移动

{

if(Sam[y][x+R]==0)

{

Sam[y][x]=4;

if(back)

{

Sam[y][x+R]=4;

back=false;

}

val.push_back(x);

val.push_back(y);

x=x+R;

continue;

}

}

if(y+U>=0)//上移动

{

if(Sam[y+U][x]==0)

{

Sam[y][x]=4;

if(back)

{

Sam[y+U][x]=4;

back=false;

}

val.push_back(x);

val.push_back(y);

y=y+U;

continue;

}

}

if((x+L>=0))//左移动

{

if(Sam[y][x+L]==0)

{

Sam[y][x]=4;

if(back)

{

Sam[y][x+L]=4;

back=false;

}

val.push_back(x);

val.push_back(y);

x=x+L;

continue;

}

}

if(!val.empty())//前后左右不能移动或者移动后都有阻挡,那么后退。  {   back=true;           list::iterator vend=val.end();            --vend;   y=*vend;   --vend;   x=*vend;//修改坐标   val.pop_back();   val.pop_back();   continue;  }  else  {   return false;  } } return true;}

java迷宫鼠_C++ 迷宫算法(迷宫老鼠)相关推荐

  1. c 实现走迷宫流程图_c语言迷宫问题程序功能介绍.设计思路.数据结构设计及用法说明程序结构(流程图).各模块的功能及程序说明....

    满意答案 qiniy808451 2014.01.06 采纳率:40%    等级:13 已帮助:8084人 原来也做过,以下是写的源代码,里面有部分注释,应该能看懂,可以运行.总结的话,把代码写进去 ...

  2. java迷宫_java实现迷宫算法--转

    沿着所有方向进行探测,有路径则走,没有路径则从栈中回退. 回溯法是一种不断试探且及时纠正错误的搜索方法,下面的求解过程采用回溯法.从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达, ...

  3. java动画迷宫寻路_[人工智能] 迷宫生成、寻路及可视化动画

    前言 数据结构准备 迷宫生成算法 迷宫寻路算法 前言 本次带来迷宫相关的算法,迷宫的算法涉及到不少经典的图论算法,在游戏中NPC这些算法被大量的运用,深入了解和学习这些算法是为开发游戏打下坚实的基础. ...

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

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

  5. 迷宫生成算法和迷宫寻路算法

    迷宫生成算法和迷宫寻路算法 大学二年级的时候,作为对栈这个数据结构的复习,我制作了一个迷宫生成算法的小程序,当时反响十分好,过了几天我又用自己已经学的DirectX技术制作了DirectX版的程序.这 ...

  6. c 实现走迷宫流程图_[求助]:迷宫问题 流程图

    得分:0 唉 没大大来帮一下吗 ----------------解决方案-------------------------------------------------------- #includ ...

  7. c语言程序设计迷宫问题,C语言迷宫问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 大家帮帮忙,在输入迷宫的时候出现非法字符程序就错误,如何让他在输入非法字符的时候提示输入错误,谢谢大家了 void initmaze(int maze[M ...

  8. qt 3d迷宫游戏_玩迷宫也能解锁孩子空间思维,各年龄必备迷宫书单推荐(附游戏资源下载)...

    上篇的文章------- 每日一练 28 语文试卷中惊现数学问题?!(文理什么时候都是一家.)​mp.weixin.qq.com 提到了方位感是数学里很重要的一项技能,同时分享了几个锻炼方位感的小游戏 ...

  9. 编程题走迷宫_编程题迷宫求解

    迷宫求解问题 摘 要:用矩阵表示迷宫,将矩阵表示的迷宫转换成无向图, 用邻接表存储.对无向图从入 口结点开始广度优先搜索, 用一个一维数组存储各个结点的前驱结点的编号, 通过出口结点 Vn 找到其前驱 ...

最新文章

  1. LRU(Least Recently Used)算法的理解
  2. linux安装hadoop记录
  3. 黑马程序员——java语言基础——组合,关联,聚合的区别
  4. python重定向_在Python中使用urlopen()防止“隐藏”重定向
  5. Win11系统使用Excel表格的时候很卡怎么办
  6. ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
  7. C++语言基础 —— STL —— 算法 —— unique() 的使用
  8. Python精通-Python函数使用
  9. 一文读懂-Impala
  10. 导入jasperreports出现Cannot resolve com.lowagie:itext:2.1.7.js6异常、生成PDF中文不显示中文解决方法、使用命令安装jar包
  11. Proteus仿真51单片机
  12. 【WPS】您选定的文件类型不支持包含多份工作表的工作簿。
  13. 【python实战】二:乒乓球比赛对手问题
  14. hdu 6184 三元环数目
  15. burst什么意思_burst是什么意思_burst的用法
  16. 使用电脑过程中突然无法复制粘贴了
  17. 123457123457#0#-----com.cym.YuErBaiKe02--前拼后广--育儿百科
  18. javascript错误:对象不支持此属性或方法
  19. Bootrap 项目实战(微金所前端首页)第三部分(CSS,js源码)
  20. c语言编程一对新出生的兔子,C语言兔子生兔子的问题(3中解法)

热门文章

  1. Android音乐播放器的比较。
  2. win10是linux发行版,网友调侃Win10是最好的Linux发行版
  3. 海康威视SDK二次开发通过云台参数设置控制摄像机的位置
  4. mysql如何更新两条数据_mysql根据查询结果批量更新多条数据(插入或更新)
  5. HuffMan编码C语言实现
  6. 高三计算机教学总结,2021年高三信息技术教学工作总结范文.doc
  7. 智能PID软件-AVEVA Diagrams设备符号导入
  8. 国外的服务器国内可以直连吗,国内服务器和境外服务器有什么区别?
  9. 如何在r的图片中画出特定点的水平线和垂直线_平面设计新手如何利用点线面进行构图...
  10. Java入门-Java学习路线课程面试篇:取商 / 和取余(模) % 符号的使用