Math N个保序数的组合

Math N个保序数的组合,math,combinations,Math,Combinations,在组合问题中,我们都知道我们可以把2n项放在2n方式。但是现在我有两组项目: Set A = {a_1, a_2, ...., a_n}, A.length = n Set B = {b_1, b_2, ...., b_n}, B.length = n 我的问题是:有多少种方法可以将这些2n项放在一起,以保持它们的相对顺序,例如a_i不能放在a_(i-1)之前,而b_i不能放在b_(i-1)之前,但是b_i可以放在a_i之前 例如: A=〈a_1, a_2, a_3 〉 B=〈b_1, b_2

在组合问题中,我们都知道我们可以把
2n
项放在
2n方式。但是现在我有两组项目:

Set A = {a_1, a_2, ...., a_n}, A.length = n
Set B = {b_1, b_2, ...., b_n}, B.length = n
我的问题是:有多少种方法可以将这些
2n
项放在一起,以保持它们的相对顺序,例如
a_i
不能放在
a_(i-1)
之前,而
b_i
不能放在
b_(i-1)
之前,但是
b_i
可以放在
a_i
之前

例如:

A=〈a_1, a_2, a_3 〉
B=〈b_1, b_2, b_3 〉
法律形式:

a_1 a_2 b_1 a_3 b_2 b_3
b_1 a_1 a_2 b_2 b_3 a_3
非法格式:

a_1 b_2 a_2 b_1 a_3 b_3 (b_2 visited before b_1).
请注意,这个答案是不正确的,因为您必须使用字符串中两个集合中的所有内容,如果您在序列末尾选择的数字早于您应该选择的数字,则字符串中后面的数字将失去顺序。您不能从所有剩余的数字中自由选择。

每次您从任一集合中选择一个,它将您的选项限制为第二集合中位于其右侧的选项,或最后一个选定集合右侧的选项

您可以从第一组或第二组选项中选择1t 这就剩下了另一个集合中的n+n-1(从您选择的集合中)可以为下一个选择选择=2n-1 请注意,这个答案是不正确的,因为您必须使用字符串中两个集合中的所有内容,如果您在序列末尾选择的数字早于您应该选择的数字,则字符串中后面的数字将失去顺序。您不能从所有剩余的数字中自由选择。

每次您从任一集合中选择一个,它将您的选项限制为第二集合中位于其右侧的选项,或最后一个选定集合右侧的选项

您可以从第一组或第二组选项中选择1t 这就剩下了另一个集合中的n+n-1(从您选择的集合中)可以为下一个选择选择=2n-1 请注意,这个答案是不正确的,因为您必须使用字符串中两个集合中的所有内容,如果您在序列末尾选择的数字早于您应该选择的数字,则字符串中后面的数字将失去顺序。您不能从所有剩余的数字中自由选择。

每次您从任一集合中选择一个,它将您的选项限制为第二集合中位于其右侧的选项,或最后一个选定集合右侧的选项

您可以从第一组或第二组选项中选择1t 这就剩下了另一个集合中的n+n-1(从您选择的集合中)可以为下一个选择选择=2n-1 请注意,这个答案是不正确的,因为您必须使用字符串中两个集合中的所有内容,如果您在序列末尾选择的数字早于您应该选择的数字,则字符串中后面的数字将失去顺序。您不能从所有剩余的数字中自由选择。

每次您从任一集合中选择一个,它将您的选项限制为第二集合中位于其右侧的选项,或最后一个选定集合右侧的选项

您可以从第一组或第二组选项中选择1t
这就剩下了另一个集合中的n+n-1(从您选择的集合中)可以为下一个选择选择=2n-1 您不是在搜索组合,而是在搜索置换,更具体地说是重复置换。为什么?为第一个集合中的元素选择
n
位置后,只有一种方法可以将集合中的元素放入这些位置(因为它们必须按顺序排列)。同样的推理也适用于第二组。因此,您的问题相当于这个问题:用
n
零和
n
一查找长度为
2n
的二进制字数。这是任何离散数学课程都会学到的,答案是
(2n)!/(n!*n!)

n=2
的一个例子是:A={A_1,A_2},B={B_1,B_2}。可能的排列是:

(a_1,b_1,b_2,a_2)

(a_1,a_2,b_1,b_2)

(a_1,b_1,a_2,b_2)

(b_1,a_1,a_2,b_2)

(b_1,b_1,a_1,1_2)

(b_1,a_1,b_2,a_2)

这当然符合公式(4!)/(2!*2!)=6


提示:当以编程方式计算大型
n
的此数字时,请小心处理溢出。首先计算分子,然后除以分母不是一个好的做法,因为阶乘增长非常快,因此很有可能溢出。

您不是在搜索组合,而是在搜索置换,更具体地说是重复置换。为什么?为第一个集合中的元素选择
n
位置后,只有一种方法可以将集合中的元素放入这些位置(因为它们必须按顺序排列)。同样的推理也适用于第二组。因此,您的问题相当于这个问题:用
n
零和
n
一查找长度为
2n
的二进制字数。这是任何离散数学课程都会学到的,答案是
(2n)!/(n!*n!)

n=2
的一个例子是:A={A_1,A_2},B={B_1,B_2}。可能的排列是:

(a_1,b_1,b_2,a_2)

(a_1,a_2,b_1,b_2)

(a_1,b_1,a_2,b_2)

(b_1,a_1,a_2,b_2)

(b_1,b_1,a_1,1_2)

(b_1,a_1,b_2,a_2)

这当然符合公式(4!)/(2!*2!)=6


提示:当以编程方式计算大型
n
的此数字时,请小心处理溢出。首先计算分子,然后除以分母不是一个好的做法,因为阶乘增长非常快,因此很有可能溢出。

您不是在搜索组合,而是在搜索置换,更具体地说是重复置换。为什么?为第一组元素选择
n
位置后,只有一种方法可以选择p