建议解决游戏 Globs 的算法和数据结构 ( http://www.deadwhale.com/play.php?game=131 )。它以一种极客的方式非常有趣。
用 N 表示您的方法的时空复杂度 (big-O),即网格的大小 (N>=14)。具有低复杂性的足够好的有效算法是首选。
(MatrixFrog 正确地指出这个游戏也被称为 FloodIt,并且 Smashery 在 3 个月前在他引用的链接中给出了一个解决方案。你们所有的家伙都建议修剪/贪婪只有 1 个前瞻,这给出了次优的解决方案。)
游戏生成一个由 nxn 个节点组成的随机方形网格,其中每个节点的颜色为六种颜色之一(Grn=1、Ylw=2、Red=3、Blu=4、Pur=5、Orn=6)。级别 1 有 9x9 网格,然后每个级别增加 n,最多 14 个。每个级别您最多可以进行 25 回合,否则您将失败。在每一回合中,您选择将左上角节点更改为例如 Grn->Red 的颜色,这样新颜色的任何连接的相邻(水平/垂直)节点都被同化为一个形状,并且每个同化节点增加 1 pt你的分数。计分目标是在尽可能少的回合内完成每个网格,例如,如果您在 16 回合内完成,那么您的 9 个未使用的动作 => 2*9 乘以您的总得分。
显然有很多方法可以分解它,默认选择 14x14 网格的递归回溯是一个可行的竞争者;这适用于哪些其他类型的数据结构?一种* ?不要挂在最优性上,我想知道是否有一个“足够好”的算法。
(我认为编写一个机器人并获得愚蠢的高分可能是一个有趣的项目。虽然我的肉件自己获得了 3.5E+12。)