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