如何显示其频率出现在矩阵中的唯一数字?

时间:2010-08-25 10:35:25

标签: algorithm

我有一个带有一些数字的矩阵:

1 2 3 6   
6 7 2 1   
1 4 5 6

程序应显示具有自己频率的所有不同数字,例如:

1 -> 3   
2 -> 2   
3 -> 1  
4 -> 1   
5 -> 1   
6 -> 3
7 -> 1

请帮帮我

3 个答案:

答案 0 :(得分:1)

你可能意味着

1->3

创建向量(数组),填充零,在矩阵中具有最大值的大小(如[0..9]),由整个矩阵进行travell,并且向量的每个步长增量索引等于实际数。

这是matrice中短距离值的解决方案。如果你想要一些大的值,可以使用vector的insted insted或者像这样的矩阵来计算:

1    0
5    0
15   0 
142  0
2412 0

并在第二列中增加值,并在每次找到新数字时展开此矩阵行。

答案 1 :(得分:0)

使用指针,此问题从矩阵减少到单维数组。维护一个大小等于总数的一维数组。矩阵中的元素,比如 COUNT 。用零初始化它。现在从矩阵的第一个元素开始,并将其与所有其他元素进行比较。如果我们使用指针,则此问题转换为遍历1D数组并查找每个元素的出现次数。为了遍历所有你需要做的只是递增指针。在比较遇到相同数字时,只需向前移动所有连续数字。例如,如果第0个元素为1并且您再次在第4个索引上找到1,则将第5个索引上的前向元素转换为第4个,第6个到第5个,依此类推直到最后一个元素。这样,第四个索引处的重复条目就会丢失。现在将矩阵中元素总数减少1,并将数组 COUNT 中的相应条目增加1.继续这样,直到最后一个元素,我们得到一个具有不同nos的矩阵。以及它们在数组中的相应频率 COUNT 。 这种实现对于支持指针的语言非常有效。

答案 2 :(得分:0)

以下是如何在Python中完成的示例。 dict具有以下格式:{key:value, key2:value2}。所以你可以使用它,所以你有{'2':3}这样的东西,所以它会告诉你有多少次出现的数字。 (我不是假设你要使用Python。这只是让你理解代码...也许)

matrix = [[1,5,6],
          [2,6,3],
          [5,3,9]]
dict = {}

for row in matrix:
    for column in row:
        if str(column) in dict.keys():
            dict[str(column)] += 1
        else:
            dict[str(column)] = 1

for key in sorted(dict.keys()):
    print key, '->', dict[key]

我希望你能弄明白这是做什么的。 This codepad显示输出和良好的语法高亮显示。

(我不明白为什么SO没有正确对齐代码......它是等宽的但没有对齐:S ...原来是因为我使用的是IE6(它是唯一的工作中的浏览器: - (