UVa514 Rails (铁轨) stack
UVa514 Rails(ACM/ICPC CERC 1997)(铁轨)。
#include
#include
#include
using namespace std;
const int MAXN=1000+10;
int n,target[MAXN];
int main()
{
while(scanf("%d",&n)==1){
stack s;
int A=1,B=1;
for(int i=1;i<=n;i++)
scanf("%d",&target[i]);
int ok=1; //用来控制,并返回程序的执行情况
while(B<=n){ //通过这里出去是正常的
if(A==target[B]) {A++;B++;} //相当于直接入栈出栈,就是直接经过一下C站就直接过去了
//只有在有相等的时候
//肯定是有顺序(1~n)的进入,
//有些符合的就是直接出栈,有些要等一下再出栈
else if(!s.empty()&&s.top()==target[B]) {s.pop();B++;}//处理完以后到这里的时候,发现栈顶符合就出栈了
//才会有B++的
else if(A<=n) s.push(A++);//不符合当然入栈喽,直到 末端封顶 ,到下面这个
//在这里执行的时间可能会比较多,如果连这里也满足不了的话,到下面就跳出去了,也就是No了
else {ok=0; break;} //如果这里出去就No了
}
printf("%sn",ok ? "Yes" : "No");
}
return 0;
}
(笔者acm新手期文章)
非特殊说明,本站所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
- THE END -
最后修改:2024年11月16日
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/uva514-rails/
共有 0 条评论