已知入栈顺序,确定给出的出栈顺序是否正确

输入: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的大致顺序,可见不会出现这种顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值