C ++算法:根据特定条件从2D矩阵中选取n个数字

时间:2012-07-25 23:05:42

标签: c++ c algorithm

我有一个大小为[3] [x]的二维矩阵,里面有数字。我想根据条件从该矩阵中选择x个数字

  1. 每列中只有一个数字。
  2. 每行最多'm'个数字(所有3行的总数应为x个数字,3m> x)
  3. 我想找到这些所选x值的最小可能总和。

    我能够根据基于上述条件从矩阵中找到'x'小数的迭代方法来选择数字。但我的回答并非最佳。 E.g:

    5 9 . . . . 
    6 15 . . . .
    7 19 . . . .
    

    让我们说5最初被选中(因此现在不能选择6和7)。稍后我们尝试选择9但是如果行(0)的m个元素结束,我们将不得不选择15.现在我们的解决方案将是5 + 15 = 20但我们可以使用6 + 9 = 15作为最佳解决方案。

    我正在尝试优化我的解决方案并寻找更好的算法。有人能为我提供最佳解决方案的好主意吗?

1 个答案:

答案 0 :(得分:0)

这个问题让我想起了这个问题:http://projecteuler.net/problem=345

匈牙利语算法可能有效:http://en.wikipedia.org/wiki/Hungarian_algorithm