(1)当
n=9
时,出栈序列的可能性分析
序列
{2,3,1,6,4,7,5,8}
(假设包含
9
,即
{2,3,1,6,4,7,5,8,9}
):
存在下标
i=4,j=5,k=7
,满足
Pj=4<Pk=5<Pi=6
,即存在“312”模式,因此不能由栈得到。
序列
{2,3,1,4,6,5,7,8}
(假设包含
9
,即
{2,3,1,4,6,5,7,8,9}
):
不存在任何三个下标
i<j<k
满足
Pj<Pk<Pi
,因此可以由栈得到。
答案:第一个序列不能得到,第二个序列可以得到。
(2)不能由栈得到的出栈序列中
Pi,Pj,Pk
的大小关系
若出栈序列
P1,P2,…,Pn
不能由栈得到,则存在三个下标
i<j<k
,满足
Pj<Pk<Pi.
即第二个出栈的数最小,第三个出栈的数居中,第一个出栈的数最大。
答案:
Pj<Pk<Pi
.
(3)
n=4
时以
2
开头的出栈序列个数
枚举所有以
2
开头的出栈序列:
{2,1,3,4},{2,1,4,3},{2,3,1,4},{2,3,4,1},{2,4,3,1}.
共
5
个。
答案:
5
个。
(4)
n=k
时,以
1
开头、以
2
开头的序列个数及总个数
已知当
n=k−1
时,栈可得到的出栈序列总数为
Ck−1=M
其中
Cn
为第
n
个卡特兰数。
以 1 开头的出栈序列个数
若第一个出栈元素为 1,则只能是:
push(1) → pop(1)
此后对
2,3,…,k
的出栈过程不再受限制,其出栈序列个数等于
Ck−1=M
以 1 开头的出栈序列个数为 M。
以 2 开头的出栈序列个数
若第一个出栈元素为 2,则操作前缀必为:
push(1), push(2), pop(2)
此时栈中剩余元素为 1,尚未处理的元素为
3,4,…,k
。
在后续过程中,相当于在栈底固定 1 的条件下,对
3,4,…,k
进行出栈操作。
- 不加限制的总数为:
Ck−1
- 其中 1 在
3,…,k
之前出栈的情况非法,其个数为:
Ck−2
故 合法序列个数 为:
Ck−1−Ck−2
出栈序列总数
卡特兰数满足递推关系:
Ck=k+12(2k−1)Ck−1
由 (C_{k-1}=M),得:
Ck=k+12(2k−1)M
所以
- 以 1 开头的出栈序列个数:
M
- 以 2 开头的出栈序列个数:
Ck−1−Ck−2
- 出栈序列总数:
k+12(2k−1)M