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

今天理解了如何利用图的深度优先算法生成迷宫。关键在于: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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值