1.(2.0假设一个有n个“栈”的铁路转轨网络,如图3.4所示n=4时情况,初始时有2n列列车位于网络右边。试证明:通过实施一系列适当分)的操作(要求操作方向与图中箭头的方向相一致),最终在左边可形成2n!种不同的列车排列顺序。假设每个栈中足以容纳所有的列
时间: 2024-04-02 20:37:20 浏览: 110
n个列车进出栈排序,用栈和递归实现,
4星 · 用户满意度95%
0 0 0 0 0 0 0 0 0 0 0 0 0 0 车。
首先,我们可以发现,对于每一个栈,其实可以看做是一个容量无限的栈0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,因为我们可以一直往里面加入列车。因此,我们可以把每个栈都当做一个大 0 0;
0 0 0 0 -1 0 0 0 0 0 0 的“桶”,而每个“桶”里面的列车顺序是可以随意调整的。
假设我们有0 0 0 0 0 0 0 0 0 0 0 0 0 0 0n个“桶”,那么我们可以把这n个“桶”分成两个部分,分别是左边的 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0k个“桶”和右边的n-k个“桶”。假设左边的k个“桶”里面有x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 个列车,右边的n-k个“桶”里面有y个列车,那么我们可以得到以下的0 0 0 0 0 0 0 0;
0 0 0 0 0 -1式子:
x + y = 2n (因为总共有2n列列车)
假设我们要把这些 0 0 0 0 0 0 0 0 0 0 0 0 0 0 列车全部移到左边,那么我们可以先把右边的n-k个“桶”中的列车全部移到左0 0 0 0 0 0 0 0 0 0 0 0 0 0 0边的k个“桶”中,此时左边的k个“桶”中的列车数为x+y,而 0 0 0;
0 0 0 0 0 0 1 0 0 0 右边的n-k个“桶”中的列车数为0。接下来,我们再依次把左边的0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
k个“桶”中的列车移到右边的n-k个“桶”中,直到左边的k个“ 0 0 0 0 0 0 -1 0 0 0 0 0 0 0桶”中的列车数为0,右边的n-k个“桶”中的列车数为x+y。
那 0 0 0 0 0 0 0 0 0 0 0 0 0 0 么我们可以得到以下的式子:
x + (n-k)y = 2n! (因为总共有2n0 0 0 0 0 0 0 0 0 0 0;
0 0 0!种不同的列车排列顺序)
我们可以解出y的值:
y = 2n!/((n-k 0 0 0 0 1 0 0 0 0 0 0 0 0 0 )!k!)
因此,我们可以得到左边的k个“桶”中的列车数为x = 2n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - y。因此,我们可以发现,只要确定了k的值,就可以确定左边的k个“桶 0 0 0 0 0 0 0;
0 0 0 0 0 0 ”中的列车数,从而确定左边的列车排列顺序。因为k的取值范围是0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0从0到n,因此总共可以形成的不同的列车排列顺序的数量为:
2n! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = Σ(2n!/((n-k)!k!)) (k从0到n)
因此,在左边可形成20 0 0 0;
0 0 0 0 0 0 0 0 1 0n!种不同的列车排列顺序。
阅读全文