有一个问题,我需要用零填充数组,具有以下假设:
0和10来1和1到01在数组中相遇时,我们必须将它更改为0,以便它的邻居也被更改,例如,对于如下所示的数组:Run Code Online (Sandbox Code Playgroud)1 0 1 1 1 1 0 1 0
当我们在(1,1)处更改元素时,我们得到了这样的数组:
Run Code Online (Sandbox Code Playgroud)1 1 1 0 0 0 0 0 0
1以0零出数组1)第一个例子,数组如下所示:
Run Code Online (Sandbox Code Playgroud)0 1 0 1 1 1 0 1 0
答案是1.
2)第二个例子,数组如下所示:
Run Code Online (Sandbox Code Playgroud)0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1 1 0 1 1 1 …
在这个游戏中:http://www.mathsisfun.com/games/allout.html 求解功能可以解决任何情况,无论你如何"滥用"原始板.请告诉我解决这个游戏的算法.我试着思考了好几天但仍未找到解决所有案例的线索.
好的,在阅读了一些答案和评论后(并快速浏览一下Light out游戏),我扩展了我的问题:
如果我扩大网格的大小(比如25x25),游戏会有所不同吗?在可接受的时间内(<2s)仍然有任何可能的算法来解决任何情况?
假设你有一个0和1的网格.你的目标是通过执行一系列"翻转"操作将网格转换为全零的网格:如果你在网格中翻转位置(x,y),那么同一行或列中的所有位都是(x) ,y)得到翻转.
有谁知道可以用来解决这个问题的有效算法?
我正在尝试为游戏算法创建可解函数。基本上是一个函数,如果给定的游戏可解或不可解,则返回 true 或 false。
该游戏是一种熄灯游戏。基本上你有一个 M*N 的按钮网格。当游戏开始时,这些灯的随机数字或存储模式被打开。按下任何一个灯都会切换一个由四个按钮组成的正方形,包括按下的按钮。
所以我正在寻找一种算法,如果我们可以关闭所有灯,则返回 true;如果我们不能这样做,则返回 false。