这是一个采访问题:
对于矩阵,我们定义一个操作,当我们将1添加到一个条目时, 所有周围的条目(上,下,左,右)也将添加 1.给定一个正矩阵,找到一个算法来确定是否可以使用这种操作从零矩阵构造矩阵。
解决问题的有效算法是什么?
我现在能想到的是使用回溯来尝试所有可能的组合,但这绝对不是有效的。问题有点像Lights Off游戏,但这里不是0/1,这使得更复杂。
感谢。
编辑:
例如:
3 3 can be constructed from 0 0 -> 1 1 -> 2 2 -> 3 3
1 2 0 0 1 0 1 1 1 2
答案 0 :(得分:1)
线性代数?
Cell i,j is touched x<sub>ij</sub> times.
n 2 变量和方程式。解决。通过高斯方法O(n^6)
,可能存在其他更快的方法。
此外,矩阵是特殊的,所以可以使它更快。
答案 1 :(得分:0)
我发现很少的东西(对于2x2矩阵),想先分享它们 - 矩阵中所有元素的总数应该可以被3整除(然后才有可能)。
- 我们必须在形式允许的操作步骤中表达给定的矩阵
3 3 -> 2* 1 1 + 1* 1 1
1 2 0 1 1 0
在某些情况下,无法做到这一点,例如
5 3 ->2* 1 0 + 2* 1 1 = 4 2
2 4 1 1 0 1 2 4
5 3 - 4 2 = 1 1 (this is not allowed operation)
2 4 2 4 0 0