L2-1 出栈序列的合法性 (25 分)——简单思路

文章目录

思路

入栈顺序是:1,2,3,4,5…
给出一个出栈顺序,让你判断是否合法,我们模拟入栈出栈顺序,从1开始入栈,如果当前栈顶是当前出栈的元素,那么当前栈顶出栈,否则就一直入栈,知道栈满或者当前出栈元素入栈。

AC代码

#include<bits/stdc++.h>
#define rep(i,x,y) for(int i=x; i<=y; ++i)
#define per(i,x,y) for(int i=x; i>=y; --i)
#define pushk push_back
#define popk pop_back
#define mem(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define ll long long
#define lp p<<1
#define rp p<<1|1
#define emk emplace_back
#define INF 0x3f3f3f3f
using namespace std;
const int N = 1e5+9;
int stk[N],a[N];
int main() {

	int m,n,K;
	cin>>m>>n>>K;
	while(K--){
		int tt=0,idx=0,ok=1;
		stk[++tt]=++idx;
		rep(i,1,n) cin>>a[i];
		rep(i,1,n){	
			while(stk[tt]!=a[i]&&tt<m) stk[++tt]=++idx;
			if(stk[tt]!=a[i]){
					ok=0;
					break;
			}
			else tt--;
		}
		if(ok) puts("YES");
		else puts("NO");
	}	
	return 0;
}
/*
4 4
0023
5 2
01010
5 3
01010
*/
posted @   翔村亲亲鸟  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示