Algs4-1.3.45栈的可生成性
1.3.45栈的可生成性。假设我们的栈测试用例将会进行一系列混合的入栈和出栈操作,序列中的整数0,1,...,N-1(按此先后顺序排列)表示入栈操作,N个减号表示出栈操作。设计一个算法,判定给定的混合序列是否会使数组向下溢出(你所使用的空间量与N 无关,即不能用某种数据结构存储所有整数)。设计一个线性时间的算法判定我们的测试用例能否产生某个给定的排列(这取决于出栈操作指令的出现位置)。
解答:
1)除非对于某个整数k,前k次出栈操作会在前k次入栈操作前完成,否则栈不会向下溢出。
我答:出栈时(本次出栈和以前的出栈次数)小于等于(本次出栈前的入栈次数)就不会向下溢出,否则向下溢出。
2)如果某个排列可以产生,那么它产生的方式一定是唯一的:如果输出排列中的下一个整数在栈顶,则将它弹出,否则将这压入栈之中。