带有随机元素的“矩阵”,如何在同一列中对齐相同的元素?

时间:2014-02-06 14:45:28

标签: algorithm language-agnostic

如果您有一种矩阵(或具有不同大小的行列表),每行中随机元素的随机数,您将如何重新排列矩阵,以便相同的元素出现在同一列中?

每行至少有一个元素/列,但不同的行可以有不同数量的元素/列。每行最多出现一次。

例如:

a|c
a|b|c
c|e
a|d|e
b|d

之后应该是这样的:

a| |c| | 
a|b|c| | 
 | |c| |e
a| | |d|e
 |b| |d|

什么是有效的算法?

编辑:这只是一个简单的例子,应该涵盖任何正数的列和每列的正数元素。

元素不必保留原始列,但应在结果矩阵中与原始列的距离最小。输入中元素y之前出现的每个元素x也必须出现在输出中的y之前。对不起,这是我最初没有添加的一个重要限制因素,用户1734710提供的解决方案通常没有涵盖。

1 个答案:

答案 0 :(得分:1)

  1. 复制一个长向量v
  2. 中的所有元素
  3. 排序v并删除重复项
  4. 分配大小为m x n_rows
  5. 的矩阵v.size()
  6. 对于每行e中的每个元素r,在i中查找e的位置v并将e存储在{ {1}}