关于开关控制的算法问题

问题描述 投票:1回答:1

你能帮我解决下面的问题吗?

有一个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。

enter link description here

algorithm switch-statement
1个回答
0
投票

提供First-Stab解决方案

发布示例代码的链接是很好的,但您应该引用它,然后提供第一个解决方案。解释你遇到麻烦的原因,或者你遇到的问题。

算法和董事会状态

您的目标是找到切换单元格导致获胜状态的路径。我看到你编写了一个可玩的版本,但没有自动搜索逻辑。

看看A* search的一些提示。除了尝试例程之外,您还需要一种比较电路板状态的方法。你知道你是否达到了胜利的条件,但搜索算法往往也需要一个启发式算法。您可以使用启发式“开销更少”。

© www.soinside.com 2019 - 2024. All rights reserved.