2020团队天梯赛模拟题L2-1
根据输出序列判断是否是栈的输出结果。
正确代码:
#include<iostream>
#include<stdio.h>
using namespace std;
int n,m;
int panduan(int a[]){
int p[m+5];//模拟栈
int sum=0,sum1=1,k=0;//sum栈元素当前位置,sum1插入的数 ,k输出序列位置
while(k<n&&sum<m){
p[sum]=sum1;
while(sum>=0&&k<n&&p[sum]==a[k]){
sum--;
k++;
}
sum++;
sum1++;
}
if(k==n){
return 1;
}
return 0;
}
int main(){
int k;
while(cin>>m>>n>>k){
while(k--){
int a[n+5];
for(int i=0;i<n;i++){
cin>>a[i];
}
if(panduan(a)){
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
}
return 0;
}