推送和弹出整数来叠加,结果不可能

时间:2017-07-23 17:19:25

标签: java algorithm assembly data-structures stack

我正在尝试使用算法的在线课程,我似乎无法理解这是如何工作的。 (这不是作业,只是来自免费在线课程的问题)

有人会向我解释如何找到答案吗?在练习结束时给出,但我不明白它是如何工作的。提前致谢 ! :)

假设执行了(堆栈)推送和弹出操作的混合序列。推动按顺序推动整数0到9; pops打印出返回值。以下哪个序列不会发生? (a)4 3 2 1 0 9 8 7 6 5

(b)4 6 8 7 5 3 2 9 0 1

(c)2 5 6 7 4 8 9 3 1 0

(d)4 3 2 1 0 5 6 7 8 9

(e)1 2 3 4 5 6 9 8 7 0

(f)0 4 6 5 3 8 1 7 2 9

(g)1 4 7 9 8 6 5 3 0 2

(h)2 1 4 3 6 5 8 7 9 0

正确答案:(b),(f)和(g)。

1 个答案:

答案 0 :(得分:3)

如果按顺序按下数字,即使随机出现弹出,也有一些事情永远不会发生。考虑(b):

按0,1,2,3,4,弹出4,按5,6,弹出6,按7,按8,弹出8,弹出7,弹出5,弹出3,弹出2,按9,弹出9 ....你不能弹出0因为一个人挡路了。

其他错误答案也是如此。