1051 Pop Sequence (25 分)
思路
栈的使用
注:使用pop()和top()必须在确定stack长度不为0时,否则会出现段错误
while(!ss.empty() && ss.top() == in[cur] )
代码
#include<bits/stdc++.h>
using namespace std;
stack<int>ss;
int in[1005]={
0};
int main(){
int M,N,K;
cin>>M>>N>>K;
while(K--)
{
bool flag =false;
int cur = 0;
while(!ss.empty())
ss.pop();
for(int i =0;i<N;i++)
cin>>in[i];
for(int i=1;i<=N;i++)
{
ss.push(i);
if(ss.size()>M)
{
flag = true;
break;
}
while(!ss.empty() && ss.top() == in[cur] )
{
ss.pop();
cur+=1;
}
}
if(!ss.empty() || flag)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
}