阵列的不同排列的总数,其中两个不相交的子阵列中的元素的相对顺序保持不变

时间:2012-10-04 06:42:52

标签: arrays permutation

给出一个整数数组。

例如a = {1,2,20,19} 让两个不相交的子阵列为{1,2}和{20,19}。有5种这样的排列,其中'1'总是在'2'之前,'20'总是在'19'之前,这样的排列是:

  1. {1,2,20,19}
  2. {1,20,2,19}
  3. {1,20,19,2}
  4. {20,1,19,2}
  5. {20,19,1,2}
  6. 我的问题是:

    给定一个数组,大小为[1 ... n + m] = n + m。求出两个子阵列a [1..n]和[n + 1..n + m]中元素的相对顺序保持不变的排列数。

1 个答案:

答案 0 :(得分:1)

  1. 在您的示例中,它将是6个排列。你错过了{20,1,2,19}。

  2. 这是一个纯粹的数学(组合学)问题。这个问题相当于 -
    找到等式的所有可能解的数量:

    x0+x1+....+xn = m

  3. 答案由公式 - (n+m)!/(m!n!)

    定义

    例如,在您的情况下,它将是n=m=2,答案是4!/2!2! = 6