这就是问题所在:我得到了一个类似的矩阵
输入:
1 1 1
1 1 1
1 1 1
在每一步,我都需要找到一个由 1 和 0 组成的“第二个”矩阵,在同一行或同一列上没有两个 1。然后,我将从原始矩阵中减去第二个矩阵。我将重复这个过程,直到我得到一个全为 0 的矩阵。此外,我需要采取尽可能少的步骤。
我需要在 O(n) 时间内打印所有“第二个”矩阵。在上面的示例中,我可以通过按顺序减去这三个矩阵,分 3 步得到空矩阵:
预期输出:
1 0 0
0 1 0
0 0 1
0 0 1
1 0 0
0 1 0
0 1 0
0 0 1
1 0 0
我编写了一个尝试,其中我找到了第一个最大值并根据该值的索引创建第二个矩阵。但是对于上述输入,我得到 4 个输出矩阵,这是错误的:
我的输出:
1 0 0
0 1 0
0 0 1
0 1 0
1 0 0
0 0 0
0 0 1
0 0 0
1 0 0
0 0 0
0 0 1
0 1 0
我的解决方案适用于大多数测试用例,但不适用于上面给出的测试用例。有人可以给我一些关于如何进行的指示,或者找到一种保证最优性的算法吗?
有效的测试用例:
输入:
0 2 1
0 0 0
3 0 0
输出
0 1 0
0 0 0
1 0 0
0 1 0
0 0 0
1 0 0
0 0 1
0 0 0
1 0 0