代码之家  ›  专栏  ›  技术社区  ›  K123

对于一个特定的N位数字,有多少不同的数字排列?

  •  1
  • K123  · 技术社区  · 2 年前

    问题很简单。我们有一个 N -数字位数( N<=18 )我们需要知道这个数字的所有可能的不同组合。例如,数字214的答案( N=3 )为6(可以创建214、241、124、142、412、421)。我正在寻找一种计算这个的算法。

    我注意到 N -数字不同数字的最大数量等于 N . 然而,当数字不明显时,我不知道这个东西是如何工作的。我尝试了几种方法,例如试图编写一个公式来制作它或编写代码,但都没有成功。

    1 回复  |  直到 2 年前
        1
  •  2
  •   Jarod42    2 年前

    会的

    N! / (#0! * #1! * #2! * #3! * #4! * .. * #9!)
    

    具有 #d 的数量 d .

    N! 是不同元素的排列总数。

    那就考虑一下 1a , 1b 作为区别 1 ,我们必须分开 N 通过的置换数 1. (也适用于其他数字)。

    所以对于 1112235 会的

    7! / (3! * 2! * 1! * 1!) (忽略 0! 哪个是 1. )