一个栈的入栈序列为1,2,3,...,n ,其出栈序列是 p 1 ,p 2 ,p 3 ,...p n 。若p 2 = 3,则 p 3 可能取值的个数是()
答案:C ( n - 1)个
看了别人的一些解析,觉得不够完善,下面给出自己的见解。
首先,栈的先进后出原则大家应该是知道的。
根据题意 p 2 = 3,可以知道 p 1 的可能情况有三种:1,2 或 4 。(看到有些人只想到了 1,2)
为啥这样想呢?这里估计还有一个关键是要考虑到 n 的大小。
当 n = 3 时, p 2 = 3 的话,那么 p 1 有两种情况 1 和 2 。
- 如果 p 1 = 1 , 那么 p 3 = 2 ;
- 如果 p 1 = 2 ,那么 p 3 = 1 ;
此时的话我们就可以看到 p 3 只有两种可能 1 或者 2 (n - 1)个。
当 n > 3 时: p 2 = 3 的话,那么 p 1 有三种情况 1 , 2 和 4 。
- 如果 p 1 = 1 , 那么 p 3 = 2,4,5,... n (n - 2)个
- 如果 p 1 = 2 ,那么 p 3 = 1,4,5,... n (n - 2)个
- 如果 p 1 = 4 ,那么 p 3 = 2,5,6,... n (n - 3)个
此时的话我们就可以看到 p 3 的情况有 1,2,4,5,... n (n - 1)个。
综上所述就是 p 3 可能取值的个数是 (n - 1)个。