UVA 514 Rails

来源:互联网 发布:网络说嗑麻子啥意思 编辑:程序博客网 时间:2024/06/10 01:47

/*

每段数据一个n,后面有多行数据,每组n个整数,最后一行为零,最后一段数据以零结束

求能否由1-n通过栈得到该行数据,能输出“Yes”,不能则输出“No”,每段数据后跟一个空行

*/

#include <stdio.h>#include <stack>using namespace std;int num[1024];int main(){int n;while(scanf("%d",&n)&&n){while(scanf("%d",&num[0])&&num[0]){stack<int>s;//如果不在此处定义栈,则必须在这里对栈置空,否则会有数据遗留for(int i=1;i<n;i++)scanf("%d",&num[i]);for(int i=1,count=0;i<=n;i++){s.push(i);while(!s.empty()&&s.top()==num[count])//必需先判断非空才能访问栈顶,否则但空栈时访问出错{count++;s.pop();}}printf("%s\n",s.empty()?"Yes":"No");}printf("\n");}return 0;}


0 0