当前位置: 首页 > 面试题库 >

快速计算多类别组合的数量

酆乐湛
2023-03-14
问题内容

我必须为重复对象的排列评估以下公式

n!/(r1! * r2! * r3! * ......... * rn!)

其中n <= 5001 <= ri <= 10(总共有n个对象,其中r1类似于1种,r2类似于第二种,依此类推,该公式表示此类对象的排列数目)。

我需要一个有效的编码解决方案,因为在Java中使用大整数并不能证明在大情况下是有效的。

提前致谢。


问题答案:

您可以使用

public class Permutation

设计来解决您的问题。

请参阅此链接以供参考

要么

像这样 :

private static Double calculatePermutationEntropy(List<Double> values, int baseOrder) {
 int valuesSize = values.size();
 if (baseOrder >= valuesSize + 1) {
   throw new RuntimeException("The size of the values is bigger than the order");
 }

 List<String> result = new ArrayList<String>();
 // iterate over the input
 for (int i = 0; i < valuesSize - baseOrder + 1; i++) {
   List<Double> neightbors = values.subList(i, i + baseOrder);

   List<Double> orderedValues = new ArrayList<Double>(neightbors);

   String window = "";
   for (int j = 0; j < neightbors.size(); j++) {
     // add the indexes in a string representation
     window += orderedValues.indexOf(neightbors.get(j));
   }
 result.add(window);
 }
 // use the shannon entropy calculation to get the result
 return calculateShannonEntropy(result);
}

资源



 类似资料:
  • 本文向大家介绍如何计算R中类别变量组合的行数?,包括了如何计算R中类别变量组合的行数?的使用技巧和注意事项,需要的朋友参考一下 当我们有两个分类变量时,每个变量可能为另一个变量具有不同的行数。这有助于我们理解这两个类别变量的组合值。我们可以使用dplyr包的count函数找到这种类型的行。 示例 考虑以R为基础的CO2数据 查找每个处理类型变量的行数- 为类型变量查找每个工厂的行数- 查找每个处理

  • 我有一个带有父类id的categories表来存储类别和子类别。该类别可以是多级的,这意味着一个类别可以有子类别,每个子类别可以有子类别,依此类推。而且它是动态的,因此级别数量不受限制。我在类别模型中定义了一个函数,名称如下: 现在我想急切加载的类别与子类别 工作伟大,但它只得到一个级别的子类别,我想急于加载所有级别。差不多 有办法吗?要获得所有类别级别?如果没有,如何在一个集合中获得所有级别的子

  • 我正在寻找一个快速的算法: 我有一个大小为n的int数组,目标是在数组中找到所有模式, 例如,我知道有一个大小为3的int数组是,那么只有一种可能性:12=3(考虑12=21) 我正在考虑实现对和Hashmap来使算法快速。(我现在得到的最快的仍然是 请分享你对这个问题的看法,谢谢

  • 问题内容: 我正在使用NLTK在语料库中搜索n- gram,但是在某些情况下会花费很长时间。我已经注意到,计算n元语法在其他软件包中并不罕见(显然,Haystack具有某些功能)。如果我放弃NLTK,这是​​否意味着可以以更快的方式在语料库中查找n- gram?如果是这样,我可以使用什么来加快速度? 问题答案: 由于您没有指明是想要单词级还是字符级的n-gram,因此我将假设前者,而不会失去一般性

  • 问题内容: 我有一个符合多种协议的Objective-C变量。 我将如何在Swift中代表这种类型? 问题答案: 这应该工作: 注意,必须快速使用NSObjectProtocol而不是NSObject。 以下是一些其他示例: 符合多种协议的对象数组: 具有符合多种协议的参数的功能: 对于3.1之前的Swift版本,请使用:

  • 我有一个包含100,000个集合的数组。每个集合包含1,000,000以下的自然数。我必须找到有序对的数量{m,n},其中0 例如,我有两个集合set1={1,2,4}set2={1,3}。5以下所有可能的有序数对是{1,2}、{1,3}、{1,4}、{2,3}、{2,4}和{3,4}。集合1中不同时存在的低于5的数的有序对是{1,3}、{2,3}和{3,4}。集合2中5以下缺失的有序对是{1,2