题目

题意:给定栈的大小,元素个数,以及待测序列,输出是否是栈的一种出栈序列 

tip:模拟

#include<iostream>
#include<vector>
using namespace std;
int main() {
	int n,m,k;
	cin>>n>>m>>k;
	int temp[m];
	for(int i=0; i<k; ++i) {
		int t=1,flag=0;
		for(int j=0; j<m; ++j)
			cin>>temp[j];
		vector<int> st;
		for(int j=0; j<m; ++j) {
			if(st.size()&&st[st.size()-1]==temp[j])
				st.pop_back();
			else {
				while(1) {
					st.push_back(t);
					t++;
					if(st.size()>n) {
						flag=1;
						break;
					}
					if(st[st.size()-1]==temp[j]) {
						st.pop_back();
						break;
					}
				}
			}
			if(flag)
				break;
		}
		if(flag)
			cout<<"NO\n";
		else cout<<"YES\n";
	}
	return 0;
}