我需要为5×5矩阵解决以下问题,但为了解释,我将使用3×3矩阵的示例:
A = { { 1, 3, 2 }
,{ 3, 2, 3 }
,{ 0, 4, 5 } };
我需要找到所有3个不同位置的集合(因为矩阵是3x3),彼此不共享行或列,计算每组位置的A元素之和,并打印这些和的最小值。 >
Position = (0,0),(1,1),(2,2) sum = 1+2+5 = 8 (0,0),(1,2),(2,1) sum = 1+3+4 = 8 (0,1),(1,0),(2,2) sum = 3+3+5 = 11 (0,1),(1,2),(2,0) sum = 3+3+0 = 6 (2,0),(1,1),(0,2) sum = 0+2+2 = 4 . . .
((我认为您了解主要原理)。
因此输出必须包括:(2,0),(1,1),(0,2)最小和= 4
记住:我实际上需要对5×5矩阵进行此操作。
我需要为5×5矩阵解决以下问题,但为说明起见,我将使用一个3×3矩阵的示例:A = {{{1,3,2},{3,2,3}, {0,4,5}};我需要找到所有不同的...
一种实用的,尽管很幼稚的方法是使用6个for循环(嵌套5个)。从0循环到2,顶部循环将其迭代#存储在int中(例如,称为firstRow)。同样,第二个循环将存储firstCol。第三个循环将用于存储secondRow,因此如果continue
,则需要secondRow == firstRow
。对于最后两个循环,您需要检查其他两个循环的索引。在最内层的嵌套循环中,使用3个坐标对调用findSum函数。
[这是另一个建议:您要使用的矩阵中的所有位置集都可以表示为一个单位矩阵的排列,该矩阵的“ 1”项告诉您要累加哪些矩阵元素。然后,您将所有排列的总和取最小值。您可以用一个简单的数组表示置换,因为NxN单位矩阵的置换中只有N个元素等于1。因此,调用该数组p,其中p(i)告诉您要使用第i行的哪一列。