翻转世界是一场游戏。在该游戏中,给出了大小为N * M的矩阵,其由数字组成。每个数字只能是1或0。行的编号从1到N,列的编号从1到M.
以下步骤可以称为单一动作。
选择两个整数x,y(1 <= x <= N且1&lt; = y <= M),即矩阵上的一个正方形。
由(1,1)和(x,y)表示的矩形中的所有整数,即具有左上和右下点为(1,1)和(x,y)的矩形被切换(1是0和0是1)。
例如,在该矩阵中(N = 4且M = 3)
101
110
101
000
如果我们选择x = 3且y = 2,则矩阵的新状态将为
011
000
011
000
对于给定的矩阵状态,游戏的目标是将矩阵缩减到所有数字为1的状态。所需的最小移动次数是多少。
如何解决这个问题?
这不是一个家庭作业的问题。我很困惑。我在过去的两天里一直在与这个问题作斗争。并且维持一个2-D阵列的数量为1和0。 我尝试平衡一个零的数量和零的数量。但是没有成功。任何提示或解决方案。 ?
来源:Hackerearth
答案 0 :(得分:0)
提示#1:从下到上使用贪婪的方法。即:如果单元格(n,m)为0,则必须将XOR应用于矩形(0,0) - (n,m)。因此,尝试从底部到顶部以及从右到左遍历所有单元格,如果当前单元格为零,则对其执行移动。
这产生O(n ^ 4)解。
要获得n ^ 2解决方案,例如,使用每个矩形中的累计总和。