【问题标题】:algorithm to find minimum steps to finish a path找到完成路径的最小步骤的算法
【发布时间】:2019-04-14 02:35:59
【问题描述】:

问题是让玩家沿着路径移动 n 个方格,从第 1 个方格开始,每一步向前移动。在任何 点,你可以做三件事之一。

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

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

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

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

如何设计算法来查找:

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

  2. 需要按下按钮才能获胜。

【问题讨论】:

  • 您遇到的具体问题是什么?你能展示一下你的尝试吗?

标签: algorithm optimization dynamic


【解决方案1】:

您可以从头向后工作并应用动态规划算法:

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

  • 如果是蓝色:
    • 如果在此之后的位置少于 5 个:将绿色移动(5 步)链接到该条目
    • 另外检查路径中前面 2、3 和 5 的每个点(已处理):选择与它相关的最佳解决方案(最少移动)的点。使用相应的移动(2 = 白色,3 = ... 等)扩展(前置)该解决方案并将该信息存储在当前条目中。

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

解决方案是存储在路径的第一个条目中的内容。当然,也有无法取胜的情况。

【讨论】:

    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多