这是我连续第三天要解决的算法问题的一部分。所以我们得到了一个 3xn(n 行,3 列)的数组。我们需要找到这样的最小总和:
- 我们只从每一行中选择一个元素,
- 必须表示每一行,因此在这样的总和中,每一行必须有一个数字,
- 每列必须表示,因此必须至少有一个数字位于第一列,至少一个位于第二列,至少一个位于第三列。
让我们以该数组来说明问题:
6 2 4
8 7 5
6 2 4
9 6 5
在这种情况下,最小的总和是8 (1st column, 2nd row) + 2 (2nd column, 1st row) + 5 (3rd column,4th row) + 2 (2nd column,3rd row) = 17
我尝试以如此贪婪的方式解决这个问题,我创建了该数组的三个副本,按各自的列对它们中的每一个进行排序,然后尝试3!使三个数字的总和最小,并为其余数字加上最小值,但随后上述情况的解决方案是:
6 (1st column, 3rd row) + 2 (2nd column, 1st row) + 5 (3rd column, 4th row) + remaining 5 (3rd column, 2nd row) = 18所以这种贪婪的方法被证明是不成功的。有人会建议我应该改变我的方法以使其成为可行的方法吗?