首先是结论:n个不同元素进栈,出栈序列的个数为卡特兰数:1/(n+1)*Cn2n
如a,b,c依次入栈,出栈时有可能:
- a进栈;b进栈;c进栈;一起出栈,最终为cba
- a进栈出栈;b进栈出栈;c进栈出栈,最终为abc
- a进栈出栈;b进栈;c进栈出栈;b出栈,最终为acb
- a进栈;b进栈出栈;c进栈出栈;a出栈,最终为bca
- a进栈;b进栈出栈;a出栈;c进栈出栈,最终为bac
备注:如果要求列出所有可能,先写出所有情况再挨个分析是最稳妥的方法:
eg:入栈顺序为1,2,3,4,出栈顺序有哪几种?1234√ 1243√ 1324√ 1342√ 1423× 1432√
2134√ 2143√ 2314√ 2341√ 2413× 2431√
3124× 3142× 3214√ 3241√ 3412× 3421√
4123× 4132× 4213× 4231× 4312× 4321√
14种可能,10种不可能