栈和队列迷宫问题

#define N 6 
int maze[N][N] = 

{0,0,0,0,0,0}, 
{0,0,1,1,1,0}, 
{0,0,1,0,1,0}, 
{0,0,1,1,1,0}, 
{0,0,1,0,1,1}, 
{0,0,1,0,0,0}, 
}; 

通过一个数字来创造一个6*6的迷宫,其中0代表墙,1代表能够走的路。

 

这里将数组通过画图软件画出来,这里红色的1代表迷宫的入口,绿色的1代表迷宫的出口。

这个数组所创建的迷宫是相对复杂的一种迷宫,首先这个迷宫是存在环的

 

这几个1,如果你的迷宫函数只是用简单的循环程序来走或者说通过普通的递归那你就很有可能程序崩掉,陷入一个死循环。

其次就是这个迷宫是存在两条路的,通过两条路可以出去,但是一个长一个短,应该通过什么算法才能找到那条短的路径,这是一个需要思考的问题。

 

 最简单的方法,如果这个迷宫不带环的话,那完全可以通过递归来完成。

 

int CheckPath(int *a, Pos next, int n)

{

if (next._col < n && next._col >= 0

&& next._row >= 0 && next._row < n

&& (a[next._row*n + next._col] == 1))

return 1;

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值