找到完成路径的最小步骤的算法

时间:2018-11-10 22:36:03

标签: algorithm optimization dynamic

问题是沿着路径移动玩家 n个正方形,从正方形1开始,并在每个步骤中向前移动。在任何 点,您可以做三件事之一。

  • 按白色按钮向前移动2个正方形。如果 剩下不到2个正方形,则此按钮终止 游戏,您赢了。

  • 按红色按钮向前移动3个正方形。如果 剩下不到3个正方形,则此按钮终止 游戏,您赢了。

  • 按绿色按钮可向前移动5个正方形。如果 剩下不到5个正方形,则此按钮终止 游戏,您赢了。

规则:每个正方形都涂有蓝色和绿色。 如果玩家停在绿色方块上。他输了。

如何设计算法来查找:

  1. 完成游戏所需的最少步骤

  2. 需要按下
  3. 按钮才能赢。

1 个答案:

答案 0 :(得分:0)

您可以从头到尾进行操作并应用动态编程算法:

从路径中的最后一个条目开始:

  • 如果为蓝色:
    • 如果此位置之后少于5个位置:将绿色动作(5个步骤)链接到该条目
    • 否则,请检查路径中每个位于前面2、3和5的点(已经处理过):采用链接到其上具有最佳解决方案(最小移动)的点。通过相应的动作(2 =白色,3 = ...等)扩展(添加)该解决方案,并将该信息存储在当前条目中。

对于路径中的每个前面的条目重复此操作,每次存储从那里到获胜(如果为蓝色)的最短路径的信息

解决方案是存储在路径的第一项中的内容。当然,在某些情况下不可能赢得胜利。