复杂的组我指的是并非所有值都不同的组。也就是说,如果普通组是1,2,3,4,5,6,7(其中不同组合的数量是7C0 + 7C1 + 7C2 ... = 2 ^ 7),那么一个例子为复数群是1,1,1,3,3,5,7。如何计算这些组中可以生成多少种不同的组合(顺序无关紧要)?
编辑:澄清这一点。例如,如果我们取7C1 = 7,那么我们发现它不能应用于复杂的组。那是因为我们得到了7个不同的组,但是其中一些是相同的(1 = 1 = 1和3 = 3),所以实际上只有4个不同的组(1,3,5,7)。换句话说,在1,1,2的简单情况下,简单的2 ^ 3会考虑这些组:
{},{1},{1},{2},{1,1},{1,2},{1,2},{1,1,2} = 8
我需要的是一种计算不同群体数量的方法(我认为{1,2} = {2,1})。那会考虑这些:
{},{1},{2},{1,1},{1,2},{1,1,2} = 6
答案 0 :(得分:2)
它是集合中唯一元素(count + 1)的乘积。
Explanation :
对于每个唯一号码,它可以从zero
到k
次发生,其中k
是该号码的重复次数。因此,每个唯一号码都有[0..k]
个,即(k+1)
个选项。所以它是集合中唯一元素(count + 1)的乘积。
对于{1,1,2}
:1
= 2+1
= 3
的计数+ 1和2
的计数+ 1 = 1+1
= {{ 1}}
所以答案是2
。
对于3*2 = 6
,它是{1,1,1,3,3,5,7}
python3代码:
(3+1)*(2+1)*(1+1)*(1+1) = 4*3*2*2 = 48