电子说
迷宫问题是一道经典的回溯算法问题,给定一个迷宫矩阵,矩阵中的1表示障碍,0表示可走通路,给定迷宫入口出口,要求寻找从入口穿过迷宫到达出口的所有路径,有则输出,无则给出提示。一本合格的数据结构教科书一般都会介绍迷宫问题,网上的分析也是铺天盖地,这里就不再赘述重复的内容了。废话不多说,简单介绍一下程序,然后上代码。
该程序用二维数组表示迷宫,用另一个二维数组记录迷宫中的位置是否已经走过,同时用一个链式栈存放搜索出的临时路径。程序从迷宫入口开始试探,随着回溯试探过程的进行,链式栈的长度不断变化,当试探到迷宫出口时,链表中存放的就是一条完整的穿过迷宫的路径了,输出路径后回溯,继续试探下一条路径,当回溯到入口时没有新的可走方向时整个回溯试探的过程也就结束了。链表节点中除了存放被路径连接的各单元的行列标外,还存放有由该节点代表的单元前往该节点的后继节点代表的单元的方向,这么做是为了方便回溯操作的进行。
为方便起见,程序中迷宫的入口是固定的,为左上角单元,出口同样固定,为右下角单元。这并不妨碍程序的普适性,只要稍加修改就可以使程序适用于任意给定的出口和入口的情形。
啰嗦了这么半天,下面该上代码了,代码用C语言编写,具体如下。
全部0条评论
快来发表一下你的评论吧 !