AcWing 1535. 弹出序列
原题链接
中等
作者:
og_
,
2020-06-02 12:18:31
,
所有人可见
,
阅读 578
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N= 1010;
int main(){
int m,n,k;
cin>>m>>n>>k;
for(int i = 0 ;i<k;i++){
int st[N],tt=0;
bool flag = false;
vector<int> v(n);
for(int j = 0;j<n;j++) cin>>v[j];
int res = 0;
for(int j = 1;j<=n;j++){ // 1-n入栈
st[++tt]=j;
if(tt>m) break; //如果超过栈容量 说明还没找到对应序列,直接break
while(tt>0&&st[tt] == v[res]){ //栈顶值等于当前要出栈的元素
tt--;
res++;//移动到出栈序列的下一个元素
}
}
if(res == n) flag = true; //刚好走完整个出栈序列
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}