【发布时间】:2017-12-29 06:55:50
【问题描述】:
我正在尝试学习算法的在线课程,但我似乎无法理解它是如何工作的。 (这不是家庭作业,只是免费在线课程中的一个问题)
谁能向我解释如何找到答案?在练习结束时给出,但我不明白它是如何工作的。提前致谢 ! :)
假设执行(堆栈)推入和弹出操作的混合序列。 push 按顺序推动整数 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)。
【问题讨论】:
-
我投票结束这个问题,因为它不是一个编程问题。
-
在任何时候,你只能做 2 件事中的 1 件,其中 1 件会打印一些东西,所以很明显你应该在任何给定步骤做些什么来最终得到所需的输出。
-
我不同意。这是一个编程理论问题,因为它要求个人理解一个重要的数据结构;堆栈或 LIFO。
-
@DavidHoelzer 一个直接试图了解堆栈如何工作的问题可能很好,但这个问题更多的是关于简单逻辑而不是堆栈如何工作(即使该逻辑需要了解堆栈)。
标签: java algorithm assembly data-structures stack