#include <cstdio>
#include <stack>
using namespace std;
const int maxn=1001;
stack<int> s;
int index;
int M,N,k;
int xulie[maxn];
int main(void){
scanf("%d%d%d",&M,&N,&k);
for(int i=1;i<=k;i++){
for(int j=1;j<=N;j++){
scanf("%d",&xulie[j]);
}
index=1;
int xl=1;
bool flag=true;
while(!s.empty()){
s.pop();
}
while(xl<=N){
if(s.empty()){
s.push(index++);
continue;
}
if(s.top()<xulie[xl] && s.size()!=M){
s.push(index++);
}else if(s.top()==xulie[xl]){
s.pop();
xl++;
}else{
flag=false;
break;
}
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}
PAT 1051 Pop Sequence
最新推荐文章于 2024-04-25 10:28:26 发布
该博客主要探讨了一种利用栈解决排列问题的方法。通过读取输入的M、N和k值,以及N个数的序列,利用栈进行操作,判断是否能按要求形成M个大小不同的子序列。代码中展示了如何初始化栈,处理边界情况,并通过布尔变量记录是否满足条件。最终,根据标志位输出'YES'或'NO',表明能否完成排列。
摘要由CSDN通过智能技术生成