我如何找到C中矩阵中元素的所有唯一位置集?

问题描述 投票:2回答:2

我需要为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}};我需要找到所有不同的...

c matrix multidimensional-array
2个回答
0
投票

一种实用的,尽管很幼稚的方法是使用6个for循环(嵌套5个)。从0循环到2,顶部循环将其迭代#存储在int中(例如,称为firstRow)。同样,第二个循环将存储firstCol。第三个循环将用于存储secondRow,因此如果continue,则需要secondRow == firstRow。对于最后两个循环,您需要检查其他两个循环的索引。在最内层的嵌套循环中,使用3个坐标对调用findSum函数。


0
投票

[这是另一个建议:您要使用的矩阵中的所有位置集都可以表示为一个单位矩阵的排列,该矩阵的“ 1”项告诉您要累加哪些矩阵元素。然后,您将所有排列的总和取最小值。您可以用一个简单的数组表示置换,因为NxN单位矩阵的置换中只有N个元素等于1。因此,调用该数组p,其中p(i)告诉您要使用第i行的哪一列。

© www.soinside.com 2019 - 2024. All rights reserved.