AcWing 1535. 弹出序列
原题链接
中等
作者:
sherlook
,
2020-08-24 08:40:36
,
所有人可见
,
阅读 516
#include <iostream>
#include <stack>
using namespace std;
const int N = 1010;
int m,n,k;
int stout[N];
int main(){
//m:栈容量 n:序列长度 k:check个数
cin >>m >>n >>k;
while(k --){
//从1开始入栈
int stin = 1;
stack<int> st;
//stout指针
int j = 0;
for(int i=0; i<n; i++) scanf("%d",&stout[i]);
while(j < n){
//栈为空的话直接入栈 否则st.top()会段错误
if(st.size() == 0 || (st.size() < m && st.top() != stout[j])){
st.push(stin ++);
}else if(st.size() >0 && st.top() == stout[j]){
st.pop();
j ++;
}else{
cout <<"NO"<<endl;
break;
}
}
if(j == n)
cout <<"YES"<<endl;
}
}