铁轨

来源:互联网 发布:英格拉姆赛季数据 编辑:程序博客网 时间:2024/04/18 16:50

对序列进行重组

样例输入:5

                  1 2 3 4 5

                  5

                  5 4 1 2 3

                  6

                  6 5 4 3 2 1

样例输出:

                Yes

                No

                Yes

#include <iostream>#include <cstdio>#include <stack>using namespace std;int main(){    const int MAXN=1100;    int n,target[MAXN];    while(cin>>n)    {        stack<int> s;//声明一个名为s的栈        int A=1,B=1;        for(int i=1;i<=n;i++)        {             cin>>target[i];//给栈赋值        }        int ok=1;        while(B<=n)        {            if(A==target[B])            {                A++;                B++;            }            else if(!s.empty()&&s.top()==target[B])            {                s.pop();                B++;            }            else if(A<=n)            {                s.push(A++);            }            else            {                ok=0;                break;            }        }        if(ok==1)        cout<<"Yes"<<endl;        else        cout<<"No"<<endl;    }    return 0;}

 

这个代码仔细感受一下对我们的帮助还是挺大的感觉
栈   先进入的数据被压入栈底,最后进入的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。

用STL栈实现程序可读性强 简单易懂

0 0
原创粉丝点击