找到完成路径的最小步骤的算法
Posted
技术标签:
【中文标题】找到完成路径的最小步骤的算法【英文标题】:algorithm to find minimum steps to finish a path 【发布时间】:2019-04-14 02:35:59 【问题描述】:问题是让玩家沿着路径移动 n 个方格,从第 1 个方格开始,每一步向前移动。在任何 点,你可以做三件事之一。
按白色按钮向前移动 2 个方格。如果 剩下不到 2 个方格,则此按钮终止 游戏,你就赢了。
按红色按钮向前移动 3 个方格。如果 剩下不到 3 个方格,则此按钮终止 游戏,你就赢了。
按绿色按钮向前移动 5 个方格。如果 剩下不到 5 个方格,则此按钮终止 游戏,你就赢了。
规则:每个方块都涂上蓝色和绿色。 如果玩家停在绿色方块上。他输了。
如何设计算法来查找:
完成游戏所需的最少步骤
需要按下按钮才能获胜。
【问题讨论】:
您遇到的具体问题是什么?你能展示一下你的尝试吗? 【参考方案1】:您可以从头向后工作并应用动态规划算法:
从路径中的最后一个条目开始:
如果是蓝色: 如果在此之后的位置少于 5 个:将绿色移动(5 步)链接到该条目 另外检查路径中前面 2、3 和 5 的每个点(已处理):选择与它相关的最佳解决方案(最少移动)的点。使用相应的移动(2 = 白色,3 = ... 等)扩展(前置)该解决方案并将该信息存储在当前条目中。对路径中的每个前面的条目重复此操作,每次存储从那里到获胜的最短路径的信息(如果它是蓝色的)
解决方案是存储在路径的第一个条目中的内容。当然,也有无法取胜的情况。
【讨论】:
以上是关于找到完成路径的最小步骤的算法的主要内容,如果未能解决你的问题,请参考以下文章
使用动态规划求mxn个格子,从左上角到右下角的最小路径,每次只能向右或向下移动