【发布时间】:2015-06-26 18:04:56
【问题描述】:
每个人都知道饼干桶三角钉接龙游戏。您拿起一个钉子并将其跳过另一个钉子进入一个空洞,目标是只剩下一个钉子。
在我的游戏板对象代码中,我有一个函数sCpeg(int a, int b),它改变了你当前用来跳跃的钉子。为了解决它,我将它连接到 moves 变量。每次您更改当前的钉子并使用它来跳跃时,这都算作一次移动。它是作为我希望成为搜索算法的一个非常基本的启发式完成的:探索一个钉子可用的所有可能的跳跃。如果未找到回溯解决方案,请更新当前挂钩并重复该过程。
当我写出这个想法时,这听起来像是一个使用递归的完美示例,但我不知道如何在这种情况下正确使用递归。在回溯和更新当前挂钩之间,我迷路了。
所有这些听起来都太复杂了吗?我是否应该删除移动和sCpeg() 选项并让搜索算法随机跳转直到找到解决方案?
递归是解决这个难题的好方法吗?我的跳转功能目前仅通过询问您想要跳转到的位置来工作。我必须更改它以获取每次跳跃所需的开始和结束位置,这很容易更改,但我不知道它对算法来说是好还是坏。
这是一个学校项目,所以我必须实现一个不知情的搜索和一个启发式搜索算法。更改我的 jump() 函数可能会影响我的启发式方法。
我正在使用 Java 进行编码,但由于这有点模糊,我只期待伪代码的答案。仅伪代码就足以让我走上正轨。 .
【问题讨论】:
标签: algorithm search recursion