刚开始一直没理解输入的序列是进入C的还是进入B的序列(当然答案是进入B的序列),然后进入C的序列是按顺序的1,2,3…….
#include <iostream>
#include <cstdio>
#include <stack>
using namespace std;
const int maxn=1000;int target[maxn];
int n;int main()
{while(cin>>n){stack<int>s;int A=1;int B=1;for(int i=1;i<=n;i++){cin>>target[i];//该目标序列就是进入B车站的序列}int flag=1;while(B<=n){//入栈顺序和出栈顺序相同,此语句执行到底if(A==target[B]){A++;B++;}//入栈顺序与出栈顺序相反(逆序),则此语句执行到底//当栈为空返回trueelse if(!s.empty()&&p()==target[B]){s.pop();B++;}//入栈操作,将可进栈元素进栈,还有一个作用是调整车厢为逆序出中转站else if(A<=n){s.push(A);A++;}//即不顺序也不逆序,就比如3,4,1,2这种是不存在的else{flag=0;break;}}if(flag){cout<<"YESn";}else{cout<<"NOn";}}return 0;
}
本文发布于:2024-01-29 06:38:09,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170648149213408.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |