栈的一个问题。

输入一个数字n;和一个出栈序列.

入栈顺序是从1-n

看是否可行..如n=5,出栈序列是1 2 3 4 5,这个可行输出YES  如出栈序列是  5 4 1 2 3 则输出NO

#include "stdafx.h"
#include<iostream>
#include<stack>

using namespace std;
const int MAXN=1000+10;
int n,target[MAXN];
int _tmain(int argc, _TCHAR* argv[])
{
    cin>>n;
    stack<int> 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){    cout<<"yes"<<endl;}
    else cout<<"no"<<endl;
return 0;
}
原文地址:https://www.cnblogs.com/crazycodehzp/p/3519939.html