`
atell
  • 浏览: 159255 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

[算法系列]深度优先遍历算法&生成迷宫

阅读更多

今天理解了如何利用图的深度优先算法生成迷宫。关键在于:DFS算法,选择邻结点时必须随机

 

void DFS(GRAPH  g,int qidian,int mark[])
//从第qidian个点出发深度优先周游图g中能访问的各个顶点
{
 int v1;
 mark[qidian]=1;
 printf("%c   ",g.vexs[qidian]);
 for(v1=0;v1<g.num;v1++)//此处,改造为随机,而不是顺序
 {
  if(g.arcs[qidian][v1]!=0&&mark[v1]==0)
   DFS(g,v1,mark);
 }
}

 

上述思想,可以生成例如以下的图

 


 

根据这个图,我们将结点之间的隔板,按照路线打通即可。

 



 
 具体实现,可以使用1个字节(4位)表示一个单元格,4个位表示上下左右存不存在板。例如:1111四个位分别对应表示:上下左右。

例如第一个格子应该是1110,是7.  这样,就可以使用一个2维数组存储上述的迷宫图。

 

 

 

参考:

http://zhidao.baidu.com/question/58652444.html?fr=qrl&cid=866&index=1&fr2=query

http://wenku.baidu.com/view/f22455126edb6f1aff001f13.html

http://hi.baidu.com/%CA%FD%BE%DD%BD%E1%B9%B9%BF%CE%B3%CC/blog/item/e92340cf48d8281c00e92874.html

 

  • 大小: 28.4 KB
  • 大小: 28.3 KB
分享到:
评论

相关推荐

    基于深度优先遍历的迷宫生成程序

    本人一年前基于C#,利用深度优先遍历算法,开发的生成迷宫程序,可动态定义迷宫大小,是一个完整的VS2008项目,内附源代码经测试无误,可直接运行,希望对你有帮助~~!

    Java深度优先遍历算法随机生成迷宫

    该资源为迷宫随机生成程序,用Eclipse平台开发的,采用了深度优先遍历算法。迷宫行数列数在界面输入;入口为定点(左上角);有两个出口,在右边界和下边界随机选择。

    基于深度优先遍历算法的迷宫游戏

    这个资源是一个zip压缩包,内含一个迷宫游戏的全部源代码(基于C#编码),所有的资源文件,帮助文档,符合CDIO的软件开发文档。...本程序使用深度优先遍历算法生成的迷宫极具有可玩性,人性化界面方便用户使用。

    Java基于深度优先遍历的随机迷宫生成算法

    今天小编就为大家分享一篇关于Java基于深度优先遍历的随机迷宫生成算法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    基于拆墙法生成迷宫,c#编写

    新手程序,仅供私人学习用。 采用深度优先遍历的拆墙迷宫算法。 具体文档参见代码,在代码中有很详细的注释描述。

    用 Python 制作一个迷宫游戏.pdf

    广度优先遍历算法是深度优先遍历算法的对应算法,它的核心思想是从入口出发,探索所有可能的路线,直到找到出口或者死胡同。这种算法可以使用队列的方式来实现。 4.Prim 随机算法 Prim 随机算法是一种迷宫生成算法...

    小作业之Android迷宫生成与深度遍历寻路显示

    一个自己做的迷宫生成与寻路显示小程序,可以正常运行,用递归算法生成,深度遍历寻路

    随机迷宫生成算法浅析

    例如,要遍历上面这个图采取深度优先算法(从 1 开始)准备一个 Stack s,预定义三种状态:A 未被访问 B 正准备访问 C 已经访问 一、访问 1,把它标记为已经访问,然后将于它相邻的并且标记为未被访问的点压入 s 中并...

    C++编写迷宫生成程序

    使用深度优先遍历实现的迷宫算法,在VC6.0上实现,迷宫大小已事先预定,可以修改添加改为动态大小生成

    C#编写的的简易迷宫

    采用C#编写的迷宫游戏程序,使用上下左右控制。 迷宫生成算法为深度优先遍历,具体为拆墙法。 代码是很多年前的了,有很多不尽如人意的地方。

    PHP树生成迷宫及A*自动寻路算法完整代码

    迷宫算法是采用树的深度遍历原理,这样生成的迷宫相当的细,而且死胡同数量相对较少! 任意两点之间都存在唯一的一条通路。 至于A*寻路算法是最大众化的一全自动寻路算法

    迷宫及最短路径遍历QT程序

    内包含QT程序,运行出来是一个60*60的迷宫,算法包括迷宫的自动生成,利用深度优先搜索、广度优先搜索两种方法遍历最短路径,并能在界面上动态显示。

    J2ME 手机3D游戏设计

    MIDP 2.0,以及JSR-184(J2ME 3D技术)的研究,采用立即模式,运用深度优先遍历算法来随机生成游戏地图,并尽力模拟手机游戏的普遍性形式,实现一个操作简单,并有一定可玩性的完整3D手机迷宫游戏。 关键词: J2ME...

    良心出品C++语言编写的迷宫-完整代码.doc

    2. 迷宫遍历函数`mazeTraverse`:使用深度优先搜索(DFS)算法来遍历迷宫,记录玩家的路径信息,并使用退回上一步的算法来回到上一步。 3. 主函数`main`:负责读取用户输入的迷宫大小和入口点坐标,生成迷宫,并开始...

    随机生成迷宫的算法,用两种方式:Prime,DFS实现

    (迷宫算法,随机生成迷宫) 非常简单的随机生成迷宫的算法,用两种方式:Prime,DFS实现 快要大四了,要赶紧复习下数据结构好找工作,哈哈哈哈哈,所以最近在看图相关的算法,光看书没什么感觉,准备实践一下,写个迷宫算法 ...

    php迷宫生成和自动寻路示例

    迷宫的生成类Maze.php,采用树的深度遍历算法 自动寻路是大众的寻路A*(AStar)算法

    算法分析与设计——无向图的应用(C++版).

    然后,和有向图相似的介绍了两种无向图的遍历方法(深度优先遍历和广度优先遍历)。接着介绍了迷宫问题的求解方法。最后,介绍了求解最短路径的六种方法,包括宽度优先搜索、动态规划、A﹡算法、等代价搜索法、...

    PHP树的深度编历生成迷宫及A*自动寻路算法实例分析

    三思的迷宫算法是采用树的深度遍历原理,这样生成的迷宫相当的细,而且死胡同数量相对较少! 任意两点之间都存在唯一的一条通路。 至于A*寻路算法是最大众化的一全自动寻路算法 废话不多说,贴上带代码 迷宫生成类:...

    人工智能实验 宽度优先搜索

    解决八数码问题可以使用宽度优先搜索算法、深度优先搜索算法、A\*算法等。 关于C++语言,在人工智能实验中,C++语言是最常用的语言之一。C++语言具有很多优点,如执行速度快、占用内存小等。但是,C++语言也存在...

Global site tag (gtag.js) - Google Analytics