POJ 1363 Rails
2012-07-19 11:51
417 查看
题意:就是1...N的数按顺序入栈,看给定的输入是否是合法的出栈顺序,只要模拟就可以了。
思路:按照给出的出栈顺序,一个一个和和当前栈顶的元素比较,不相等就向当前栈压入一个元素,因为是按照顺序压栈的,所以总会找到一个当前给出的顺序所在位置值一样的栈顶元素,然后出栈。同时 给出的元素顺序也后移一位 直到给出的顺序遍历完 或者出错。
输入:
5 //5个数入栈
1 2 3 4 5 //出栈顺序
5 4 1 2 3 //出栈顺序
0 //5个数的结束
6 //6个数的入栈
6 5 4 3 2 1
0 //6个数的结束
0 //输入结束
题目链接http://poj.org/problem?id=1363
View Code
思路:按照给出的出栈顺序,一个一个和和当前栈顶的元素比较,不相等就向当前栈压入一个元素,因为是按照顺序压栈的,所以总会找到一个当前给出的顺序所在位置值一样的栈顶元素,然后出栈。同时 给出的元素顺序也后移一位 直到给出的顺序遍历完 或者出错。
输入:
5 //5个数入栈
1 2 3 4 5 //出栈顺序
5 4 1 2 3 //出栈顺序
0 //5个数的结束
6 //6个数的入栈
6 5 4 3 2 1
0 //6个数的结束
0 //输入结束
题目链接http://poj.org/problem?id=1363
View Code
#include <stdio.h> int max=1010; int n,t[1010]; int main() { while(scanf("%d",&n)&&n!=0) { while(scanf("%d",&t[1])&&t[1]!=0) { int stack[max],top=0; int a=1,b=1,i; for(i=2;i<=n;i++) scanf("%d",&t[i]); int ok=1; while(b<n) { if(a==t[b]) { a++;b++; } else if(top&&stack[top]==t[b]) { top--; b++; } else if(a<=n) { stack[++top]=a++; } else { ok=0;break; } } printf("%s\n",ok?"Yes":"No"); } printf("\n"); } return 0; }
相关文章推荐
- POJ 1363 Rails
- POJ1363:Rails
- POJ-1363 Rails-堆栈入门
- POJ 1363 Rails
- UVA 514 - Rails && POJ 1363 (堆栈模拟)
- POJ 1363 Rails(模拟栈的过程)
- poj1363——Rails
- POJ 1363 Rails
- poj-1363-rails
- poj1363 Rails(栈的应用)
- poj 1363 Rails
- 1125 POJ#1363 Rails
- Poj 1363 Rails
- poj 1363 Rails(栈)
- OpenJudg / Poj 1363 Rails
- POJ---1363-Rails(stack)
- poj 1363(Stack ) Rails
- POJ 1363 Rails 笔记
- Rails http://poj.org/problem?id=1363
- POJ 1363 Rails