整形数字元素1,2,3依次进栈,有几种出栈顺序?

整形数字元素1,2,3依次进栈,有几种出栈顺序?

问题描述:

3个整形数字元素1,2,3依次进栈,请问有几种出栈顺序?
老师说答案是5.
为什么啊,不是6吗?

(1)3个均入栈后才可出栈
1(in)、2(in)、3(in)、3(out)、2(0ut)、1(out)
(2)2个先入栈后才可以出栈
1(in)、2(in)、2(0ut)、1(out)、3(in)、3(out)
1(in)、2(in)、2(0ut)、3(in)、3(out)、1(out)
(3)1个先入栈后才可出栈
1(in)、1(out)、2(in)、2(0ut)、3(in)、3(out)
1(in)、1(out)、2(in)、3(in)、3(0ut)、2(out)

5种,公式是 (2n)!/(n!(n+1)!),出栈顺序如下
1、1,2,3
2、1,3,2
3、2,1,3
4、2,3,1
5、3,2,1

为什么会是6呢?抛开公式不谈,你可以枚举。你要知道,如果是3第一个出栈的话,那么1,2的出栈顺序实际上已经确定了,也就是说3第一个出栈
只有一种情况。那么总的情况数应该是2+2+1=5

1.进一个出一个 1、2、3
2.一次进去,一次出来 3、2、1
3. 先进1,出1。2和3一次进 1、3、2
4.1,2一次进,一次出,3再进 2、1、3
5.1先进不出,2、3一次进,一次出,1再出 2、3、1