如果棋盘是一个静态矩形(不是圆环 - 所以没有跨越边界),那么唯一的最佳策略是找到一组通过棋盘的最长闭合路径,使得棋盘中的每个点都在至少一条路径中。
如果一个板是空的(没有障碍物),那么表格中存在一条“终极”路径
16|.1|.6|.7
15|.2|.5|.8
14|.3|.4|.9
13|12|11|10
它穿过所有瓷砖,遵循这种模式的蛇最终会吃掉所有食物,并填满整个棋盘
如果有一些障碍,那么这样的路径不一定存在,那么你应该找到一组这样的最长路径,并在它们之间切换,当食物出现在当前路径的无法到达的地方时。
例如
#######
#.....#
#.#.#.#
#.....#
#######
在这里,您必须考虑两条路径,一条最长,绕过整个棋盘,但错过了中心点,还有一条小环穿过它。只要食物没有出现在中心,就应该使用外环。希望当你填满所有剩余的块时食物出现在中心 - 你会“赢”。如果它出现得更快 - 你必须吃掉它(切换到另一个循环)并且取决于你当前的长度 - 你会回到最好的循环,或者击中你的尾巴并“输掉”。在每种情况下,您的分数都将是使用这些食物位置在棋盘上获得的最佳分数。
非基于 A*的方法会找到最优解,这是完全不同的问题,您应该寻找最长的闭合路径,而不是最短的。