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