题意:给定栈的大小,元素个数,以及待测序列,输出是否是栈的一种出栈序列
tip:模拟
#include<iostream>
#include<vector>
using namespace std;
int main() {
int n,m,k;
cin>>n>>m>>k;
int temp[m];
for(int i=0; i<k; ++i) {
int t=1,flag=0;
for(int j=0; j<m; ++j)
cin>>temp[j];
vector<int> st;
for(int j=0; j<m; ++j) {
if(st.size()&&st[st.size()-1]==temp[j])
st.pop_back();
else {
while(1) {
st.push_back(t);
t++;
if(st.size()>n) {
flag=1;
break;
}
if(st[st.size()-1]==temp[j]) {
st.pop_back();
break;
}
}
}
if(flag)
break;
}
if(flag)
cout<<"NO\n";
else cout<<"YES\n";
}
return 0;
}