问题很简单。我们有一个 N 位的数字 (N <= 18),我们需要知道这个数字的所有可能的不同组合。例如,数字 214 (N = 3) 的答案是 6(您可以创建 214、241、124、142、412、421)。我正在寻找一种计算这个的算法。
我注意到,对于 N 位数字,不同数字的最大数量等于 N!。 然而,当数字不明确时,我不知道这个东西是如何工作的。我尝试了几种方法,例如尝试编写公式来制作它或编写代码,但没有任何效果。
将会是
N! / (#0! * #1! * #2! * #3! * #4! * .. * #9!)
有
#d
个 d
。
N!
是不同元素的排列总数。
考虑
1a
,1b
作为区分1
,我们必须将N!
除以1
的排列数(也适用于其他数)。
所以对于
1112235
来说就是
7! / (3! * 2! * 1! * 1!)
(忽略0!
,即1
)