题目地址: http://poj.org/problem?id=1363
此题只需验证是否为合法的出栈序列。
有两个思路:
1、每个已出栈之后的数且小于此数的数都必须按降序排列。复杂度O(n^2),适合人脑。
2、另一个思路就是直接模拟入栈出栈过程。虽然模拟毫无技巧可言,但复杂度O(n),优于算法1。适合电脑。
代码如下:
for(i = 0; i < N; i++){
if(index < data[i]){
while(index < data[i]){
stack.push(++index);
}
stack.pop();
} else if(stack != null && stack.peek().equals(new Integer(data[i]))){
stack.pop();
} else {
flag = "No";
break;
}
}
题目只用于验证,倒不难,不过我想问如果让求出所有合法的出栈序列该怎么求????有高效的算法吗?

本文探讨了如何验证一个序列是否为合法的出栈序列,并提出了两种算法思路。一种适用于人脑验证,另一种适用于计算机高效求解。此外,还讨论了如何求解所有可能的合法出栈序列。

432

被折叠的 条评论
为什么被折叠?



