c语言回溯法,C语言重解经典回溯算法案例

迷宫问题是一道经典的回溯算法问题,给定一个迷宫矩阵,矩阵中的1表示障碍,0表示可走通路,给定迷宫入口出口,要求寻找从入口穿过迷宫到达出口的所有路径,有则输出,无则给出提示。一本合格的数据结构教科书一般都会介绍迷宫问题,网上的分析也是铺天盖地,这里就不再赘述重复的内容了。废话不多说,简单介绍一下程序,然后上代码。

该程序用二维数组表示迷宫,用另一个二维数组记录迷宫中的位置是否已经走过,同时用一个链式栈存放搜索出的临时路径。程序从迷宫入口开始试探,随着回溯试探过程的进行,链式栈的长度不断变化,当试探到迷宫出口时,链表中存放的就是一条完整的穿过迷宫的路径了,输出路径后回溯,继续试探下一条路径,当回溯到入口时没有新的可走方向时整个回溯试探的过程也就结束了。链表节点中除了存放被路径连接的各单元的行列标外,还存放有由该节点代表的单元前往该节点的后继节点代表的单元的方向,这么做是为了方便回溯操作的进行。

为方便起见,程序中迷宫的入口是固定的,为左上角单元,出口同样固定,为右下角单元。这并不妨碍程序的普适性,只要稍加修改就可以使程序适用于任意给定的出口和入口的情形。

啰嗦了这么半天,下面该上代码了,代码用C语言编写,具体如下。

c8022292341aaf233d66fdcd0786850b.png

2c5342b10a835a9c73c22f1d9a21a660.png

2962d7ce061a25a7ffa26949b627a53d.png

3ad679435e625dee92df8b4cd1ca27f7.png

572ed48261a951a6f7a8c4c3a6a7e88e.png

ef591f55feaf2358c4e39a88e911ac82.png

1c70e82634998f819a13fe4820189f95.png

5e030904c04c07ddea3c7ada608e15db.png

d0b966fec6afc0a04cead64fb08a976a.png

289ffad011e8b91d45599084da035a89.png

b316b21d8fb8a922bc0b0d801d7c33da.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值