我正在尝试制作扫雷求解器。如您所知,有两种方法可以确定雷区中的哪些字段可以安全打开,或者确定哪些字段已被挖掘并且您需要标记它。第一种确定方法是微不足道的,我们有这样的事情:
if (X 周围的地雷数量 – X 周围当前发现的地雷数量) = X 周围未开垦的田地数 那么 X 周围所有未开垦的田地都被开采
如果(X 周围的地雷数量 == X 周围发现的当前地雷数量)则 X 周围的所有未开垦区域都未被开采
但我的问题是:当我们找不到任何已开采或安全的场地并且我们需要查看多个场地时,情况会怎样?
http://img541.imageshack.us/img541/4339/10299095.png
比如这种情况。我们无法使用以前的方法确定任何内容。因此,对于这些情况,我需要算法方面的帮助。
我必须使用 A* 算法来做到这一点。这就是为什么我需要所有可能的安全状态来进行算法的下一步。当我找到所有可能的安全状态时,我会将它们添加到当前最短路径中,并根据启发式函数对路径列表进行排序并选择下一个需要打开的字段。