UVa514 Rails (铁轨) stack

ProLightsfx 2015-10-28 125 10/28
UVa514 Rails (铁轨) stack
UVa514 Rails(ACM/ICPC CERC 1997)(铁轨)。
Solution
stack,这里根据自己的理解加了注释。

#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 -

ProLightsfx

11月16日09:14

最后修改:2024年11月16日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论