【发布时间】:2013-01-21 22:10:31
【问题描述】:
我有 2 个 3x3 矩阵,每个矩阵都以 2D 数组表示。 第一个矩阵包含元素[我存储 PID,因此元素的范围可能是数百万,我只是将其简化为 A 在我的实际应用中它是一个整数范围,A 可能是 200,B 可能是 200000] 例如,矩阵元素
{ A B C
B D C
C F B }
second 持有每个位置的权重 例如,矩阵权重
{ 9 7 5
8 6 1
7 5 4 }
所以在上面的例子中B是最重的元素,因为它的权重是7+8+4,其次是C等等,
如何找出前 3 个最高元素?
一种解决方案是: 是将元素存储在一个单独的数组A[9][2](元素,值和唯一)中循环元素矩阵,然后另一个循环遍历值数组并填充与元素对应的值。 [迭代创建一个9x2键值矩阵,迭代排序,迭代删除重复项(因为需要合并权重),-有更好的方法吗? ]
还有其他有效的方法吗? [提示:我只需要 3 个所以我不应该使用 9x2]
【问题讨论】:
-
创建一个唯一元素数组,在另一个数组中计算(求和)它们的权重,按第二个数组的值对第一个数组进行排序,ta daa!
-
我会为此编写一些代码,与 Aziz 刚刚抛出的算法惊人地相似。
-
@AZIZ 为您的解决方案加分,但我认为有更有效的方法。
-
@purpletech 您的意思是在添加权重时跟踪每个步骤中最高的三个吗?如果不允许负权重,那也没关系。
-
等等,数组真的是 3x3,这不仅仅是一个简单的例子?
标签: c