我有一个问题,我无法解决。我有一个迷宫,我必须找到一个从S点到E点的路径,它具有最少的转向点。据了解,E点是可以重复使用的。我只能在四个方向上移动,左右上下移动。它不一定是最短的路径,只是最少的转弯。迷宫至少变成
我试图存储优先队列中的转数。例如,当我到达迷宫中的某个位置时,我将添加转数直到那里。从那里我将他的邻居添加到优先级队列中,如果它们还没有被访问或者它们不是墙壁,那么当前块的值就是我所坐的位置,例如t + x,它可以具有以下值(0 - 如果邻居面向同一个方向,我是当我靠近他时面对,或者如果它在不同的方向,则为1)。似乎这种方法不适用于每种情况。
我会很感激,如果有人可以给我一些提示,没有任何代码。
枚举所有路径,取最小的那个。为了优化,记住迄今为止的最短解决方案,并且一旦它不能再导致更短的路径,就中止对部分解决方案的探索。 – 2015-01-26 22:26:51
你了解广度优先搜索的想法吗? – Beta 2015-01-26 22:34:38
将迷宫中给定交叉点** A **的邻居列表更改为包含直线上从** A **可到达的每个交叉点。 (“交叉点”包括迷宫的开始和结束。)现在找到最短路径。 – beaker 2015-01-26 22:39:59