输入:1234
输出可能是:y是可能,x是不可能
1234 y 1243 y 1324 y 1342 y 1423 x 1432 y
2134 y 2143 y 2314 y 2341 y 2413 x 2431 y
3124 x 3142 x 3214 y 3241 y 3412 x 3421 y
4123 x 4132 x 4213 x 4231 x 4312 x 4321 y
如果要列出所有可能的次序再去判断不可能的次序是一件成本非常高的事情。
所以这里面一定是有规律的。
试想,如果1是要在第一个出栈要怎么做:那定是1入栈,下一步就得立即出栈;如果2是要在第一出栈怎么做,那定是12一起入栈后立即把2出栈。
所以规律是:答案中出栈的第一个元素是在原来的次序中是第几个,那么他的前面的元素必然都还在栈中。
如4321是可能的,因为4在第一个,4是原序列中的最后一个,那123必在栈中只能按栈规则出,即321。
如3124的顺序是不可能的,因为如果3是首个,那么12必在栈中,无论4在什么时候入栈和出栈,3之后的出栈顺序必有21的大致顺序,可见不会出现这种顺序。