出栈的模拟
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<string>
#include<set>
#include<stack>
using namespace std;
stack<int> s;
int m, n, k;
int main(){
cin>>m>>n>>k;
for(int i = 0; i < k; i++){
int cur = 1;
bool flag = true;
while(!s.empty()) s.pop();
for(int j = 0; j < n; j++){
int temp;
scanf("%d",&temp);
if(flag){
if(cur > temp){
if(s.top() != temp){
flag = false;
}
}
else{
while(cur <= temp){
s.push(cur);
if(s.size() > m){
flag = false;
// break;
}
cur++;
}
}
s.pop();
}
}
if(flag){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}
本文介绍了一个使用C++实现的栈操作模拟程序,该程序能够验证一系列整数是否可以通过合法的栈操作(包括压栈和出栈)得到。通过输入栈的最大容量、整数的数量以及整数序列,程序可以判断这些整数是否能按要求通过栈操作获得。
318

被折叠的 条评论
为什么被折叠?



