我们先观察一下迷宫的规律。
$moze = [
[1,1,1,1,1,1,1,1,1,1],
[1,0,0,1,0,0,0,1,0,1],
[1,0,0,1,0,0,0,1,0,1],
[1,0,0,0,0,1,1,0,0,1],
[1,0,1,1,1,0,0,0,0,1],
[1,0,0,0,1,0,0,0,0,1],
[1,0,1,0,0,0,1,0,0,1],
[1,0,1,1,1,0,1,1,0,1],
[1,1,0,0,0,0,0,1,0,1],
[1,1,1,1,1,1,1,1,1,1],
];
10行10列
之前有一篇文章已经介绍了迷宫的解法。这一篇我们介绍是寻找最优解。最优解就是在所有的解中找出用的步数最少的解。面对这种问题,我们一般采用深度优先搜索算法(DFS,Depth First Search)。
之所以久久没有发布这篇文章,是因为我也一直没有找到详细的解答方式,能够让人一看就懂。目前这种解法,也是参考PHP实现迷宫最短路径查找(DFS)_liangxun0712的专栏-CSDN博客
下面是具体的解题方法
<?php
class Nofish{
//终点
public function run()
{
$this->findOut(8,8);
}
private function findOut($w,$h)
{
$map = $mark = [
[1,1,1,1,1,1,1,1,1,1],//0
[1,0,0,1,0,0,0,1,0,1],//1