阵列之间的变化

时间:2012-10-25 17:10:07

标签: arrays conceptual

我有几个项目(主题),每个项目都有几个子项目,如下所述......

应用

  • microsoft word
  • 的excel
  • visual studio

DB

  • MySQL的
  • MSSQL

我想比较其中几个组,并根据各自主题中有多少子项与其他主题中的子项数相比较,给出每个主题的分数,最好是在1-10的范围内。这只是概念上,没有具体的语言。我想比较数组,我只是不知道如何将每个数组与其他数组进行比较,并在事后得出一个分数。谢谢。

1 个答案:

答案 0 :(得分:0)

这归结为计算unions。大多数现代语言实现数据类型以帮助实现此目的。 Python有字典和集合,C ++有STL映射和集合等。我会避免对联合进行任何手动计算,因为提供的数据类型在执行它时效率更高。每个主题都可以被视为一组子主题,这些子主题的结合将决定共同的主题(即每个主题)。

如果您想在每个项目(主题)之间找到分数,并且如果您有n个主题,您将计算n(n - 1)/ 2分数。请注意,随着主题数量的增加,计算得分的数量将迅速增加。

关于计算分数,你会发现集合A和集合B之间的联合。这个联合可以

  • 包含所有项目(意味着A和B具有完全相同的设置);得分为10
  • 包含所有1套(意思是B包含所有A,反之亦然)得分,具体取决于一套特有的商品数
  • 包含小于A或B的最小尺寸

所以一个简单的计算可​​能是

(union.length / max(A.length, B.length)) * 10