zoj 1259 解答分析

    技术2025-12-19  12

    火车进站问题 给出,出火车站序列比如5 4 1 2 3 ,实际上我们要做的是将准备进站的序列1 2 3 4 5 分块放进一个栈式结构,然后出来,出来的顺序:栈顶要和目标的序列的第一个相同。否则失败。

    #include<iostream> #include<stack> using namespace std; /*2020/7/4*/ int main() { stack<int>s; int n; while(cin>>n&&n){ int a[1005],b[1005];//b带有结束符号 while(cin>>a[1]&&a[1]){ for(int i=2;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)b[i]=i; b[n+1]=9999;//安排一个大数作为结束; int i=1,j=1;//标记 bool flag=true; while(i<=n) { while(true){ if(a[i]<b[j])break; s.push(b[j]); j++; } if(s.top()==a[i]){ s.pop(); i++;//弹出i } else { flag=false; break; } } if(flag)cout<<"Yes"<<endl; else cout<<"No"<<endl; } cout<<endl; } return 0; }
    Processed: 0.041, SQL: 9