如果n X n
矩阵包含1
或0
s,我需要从矩阵中选择一些1
,以便:
1
。1
都在不同的列中。如何检查是否可以这样做?
我能想到的方法具有指数复杂性:它与N Queens
问题非常相似。在第1行中选择1
,递归到第2行,依此类推。如果在任何阶段都不可能,请回溯。
但是有更好的方法吗?
答案 0 :(得分:0)
我认为您需要确定矩阵是否采用缩减行梯形式。
答案 1 :(得分:0)
这听起来像是一个动态编程问题。
每次递归时,都会从矩阵中删除整行+列。在递归的底部,你将有[1]和[0]。 [1]矩阵“成功”,[0]矩阵“不成功”。下一阶段你将有[0 0; 0 0]至[1 1; 1 1]。其中一些会成功,一些不会成功。
似乎要对矩阵的行进行排序,以便最后处理具有大量1的行将有助于