我有四个对象 - 为了争论,请说它们是以下字母: A B C D
我需要计算在以下两个条件下可以为这些变化做出的变化数量:
考虑到上述情况,这意味着使用四个对象序列,我只能有一个符合条件的序列(因为顺序不被认为是唯一的):
四个对象池中的三个对象组合有四种变体:
四个对象池中的两个对象组合有六种变体:
最简单的一个,如果一次接受:
我发誓,这是很多年前在学校里所涵盖的事情 - 而且可能已经忘记,因为我认为我不会使用它。 :-)我期待阶乘会发挥作用,但只是试图强迫一个方程式不起作用。
任何建议都将受到赞赏。
答案 0 :(得分:4)
n个对象有2 ^ n个组合,其中每个对象可以是(在集合中)或(不在集合中)。因此,您可以将组合集中的每个组合视为(0, (2^n-1))
范围内的一个整数。
要获得每个组合,只需迭代此范围并将每个整数视为位掩码。对于整数中的每个1
位,相应的元素属于集合。
除此之外:这称为power set。
答案 1 :(得分:1)
你想到的是一个组合,一组n个项目中组合k的数量是
n!/((n-k)!k!)
当提到组合的数量时,通常会说“n选择k”,因为您实际上是从n中“选择”k个元素。
编辑:啊,我误读了一下。您想要所有可能组合的计数,基本上是sum(nCk,k = 0到n)。这是功率集,如果您不想计算空集,则为2 ^ n(或2 ^ n - 1)。