algorithm - 子范畴的排列组合

标签 algorithm permutation

我有 5 个类别,每个类别都有子类别。

Category   Sub-Categories
---------  ----------------
A             6
B             7
C             15
D             22
E             10

我想计算其中可能的排列和组合的总数。

我得到数字排列 = 4069302 和组合 = 7019801,我认为这是一个错误的答案。

我的方法是这样的 (A1*B1+A1*B2+..)+(B1*C1+B1*C2+..).

我知道有很多关于排列和组合的问答。 但我很困惑,请帮助我解决这个特定问题并获得正确数量的排列和组合。

最佳答案

我将首先尝试描述我是如何理解这个问题的。

您有 N 个类别。每个类别都有 Si 子类别。

您想获得从每个类别中准确挑选一个子类别的方法数。所以 A1, B2, C3, D1, E2,或者 A2, B1, C1, D1, E5...

对于类别 1,您有 S1 可能的选择,对于类别 2,有 S2 的选择...所以答案是 Si 的乘积 - 对于您发布的示例,6 * 7 * 15 * 22 * 10 = 138600

到目前为止,这是顺序不变的,它只计算不同子类别集的解决方案。如果顺序很重要(A1、B1、...!= B1、A1、...):

我们的每个解决方案都有 N! 个排列。所以答案是Si的乘积(如上)* N!。在您的示例中,这是 138600 * 6! = 99792000

我相信其中一个涵盖了您在说“组合”时的想法。说到排列,你需要描述你说排列的意思。什么的排列

关于algorithm - 子范畴的排列组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19955641/

相关文章:

c++ - 有向图中两个给定节点的最近交汇点

C++ STL 下一个排列与组合

python - 生成一个字符串列表的所有组合,同时包含两个括号和一个被置换的运算符

javascript - 查找未用于应用程序的空闲端口 - 查找一些算法

确定是否可以通过插入字符将一个字符串更改为另一个字符串的算法?

algorithm - N序列的最长公共(public)子序列(不同用途)

java - Java中的递归排列产生错误的结果

javascript - 基于 URL 路径构建树层次结构的算法

python - 生成带有约束的大量(可能 30)的排列

javascript - 为什么我的排列算法对所有排列给出相同的结果?