紫书例题6-2 (UVa 514)

题目链接:https://vjudge.net/problem/UVA-514

 

题意:按1-n的入栈顺序,出栈顺序能否为输入的一串数字。

 

思路:直接用C++里的STL(STACK)即可,具体可看代码。

 

AC代码:

#include <iostream>
#include <stack>

using namespace std;

int main()
{
    int n,t;
    int a[1005];
    while(cin>>n&&n!=0)
    {
        while(cin >> t&&t!=0)
        {
            a[1]=t;
            stack <int> q;
            for(int i=2;i<=n;i++) cin>>a[i];
            int num=1;  //num记录当前为第几辆车
            for(int i=1;i<=n;i++)
            {
                q.push(i);   //1-n先入栈
                while(!q.empty()&&q.top()==a[num])  //判断栈顶元素与当前车辆是否相同,记得判断栈是否为空栈
                {
                    q.pop();
                    if(num<n)    //如果num==n,说明已经出完,没必要再增加了
                        num++;
                    else
                        break;
                }
            }
            if(num==n)
                cout << "Yes" << endl;
            else
                cout << "No" << endl;
        }
        cout << endl;
    }
    return 0;
}
View Code

 

posted @ 2019-01-26 15:01  abszse  阅读(115)  评论(0)    收藏  举报