你能帮我解决下面的问题吗?
有一个N * M表,每个单元都有一个开关,它有两个状态--- ON / OFF。当我们改变一个开关的状态时,不仅自身而且上,下,左和右都被改变。问题是编写一个程序来查找并打印关闭所有开关的最少步骤。如果没有,请打印-1。
例如,下面是一个3 * 4表。 (※●关闭,O开启。)
pic.1
● ● ● ●
● O ● ●
● ● ● ●
现在我们将(1,1)单元格从ON更改为OFF,然后将表格更改为以下内容。
pic.2
● O ● ●
O ● O ●
● O ● ●
当我们将(0,2)单元格从OFF更改为ON时,它将变为:
pic.3
● ● O O
O ● ● ●
● O ● ●
等等...
顺便说一下,这个例子(pic.1)的结果是4.这意味着至少需要4个步骤才能将所有开关改为OFF。
我已经使用javascript实现了这个问题并将其提交给了github。
发布示例代码的链接是很好的,但您应该引用它,然后提供第一个解决方案。解释你遇到麻烦的原因,或者你遇到的问题。
您的目标是找到切换单元格导致获胜状态的路径。我看到你编写了一个可玩的版本,但没有自动搜索逻辑。
看看A* search的一些提示。除了尝试例程之外,您还需要一种比较电路板状态的方法。你知道你是否达到了胜利的条件,但搜索算法往往也需要一个启发式算法。您可以使用启发式“开销更少”。