如何判断矩阵的每一行中是否有1,这样每个1都在不同的列中?

时间:2014-01-07 17:07:52

标签: algorithm matrix

如果n X n矩阵包含10 s,我需要从矩阵中选择一些1,以便:

  • 每一行都有1
  • 我选择的每个1都在不同的列中。

如何检查是否可以这样做?

我能想到的方法具有指数复杂性:它与N Queens问题非常相似。在第1行中选择1,递归到第2行,依此类推。如果在任何阶段都不可能,请回溯。

但是有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

我认为您需要确定矩阵是否采用缩减行梯形式。

答案 1 :(得分:0)

这听起来像是一个动态编程问题。

每次递归时,都会从矩阵中删除整行+列。在递归的底部,你将有[1]和[0]。 [1]矩阵“成功”,[0]矩阵“不成功”。下一阶段你将有[0 0; 0 0]至[1 1; 1 1]。其中一些会成功,一些不会成功。

似乎要对矩阵的行进行排序,以便最后处理具有大量1的行将有助于