*浙大PAT甲级 1051

来源:互联网 发布:淘宝密码破解 编辑:程序博客网 时间:2024/05/01 03:18

判断序列是否能够通过大小为M的栈得来。

主要考察栈的模拟。

当栈为空时,或者栈顶不等于该值且栈的容量<M,那么就循环压入123......。

跳出循环如果栈顶不等于该值则是不合理,如果等于则弹出栈顶继续循环。

AC代码:

#include<iostream>#include<vector>#include<map>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>#include<list>#include<set>#include<stack>#include<cmath>#define inf 26*26*26*10+5using namespace std;int a[1005];int main(){    int m,n,k;    cin>>m>>n>>k;    for(int i=0;i<k;i++)    {         for(int j=0;j<n;j++)         {             cin>>a[j];         }         int d=1;         int flag=0;        stack<int> s;         for(int z=0;z<n;z++)         {            while(s.empty()||(s.top()!=a[z]&&s.size()<m))            {               s.push(d++);            }            if(s.top()!=a[z])            {               cout<<"NO"<<endl;                 flag=1;               break;             }             else             {                 s.pop();             }           }         if(flag==0)          cout<<"YES"<<endl;    }}


0 0
原创粉丝点击