使用一个临时变量temp,初始值为1,代表模板数据
对于输入数据的判断:
建立一个while循环,以及bool变量flag,条件为栈的size不超过最大值和flag为真
如果当前栈为空,或者输入数据不等于栈顶元素,则加一个更大的(自增1)的temp入栈
如果等于栈顶元素则出栈
while循环结束之后判断栈是否溢出,如果溢出则将flag设置为false
新一轮开始之前如果栈不为空则应首先清空
#include<iostream>
#include<stack>
#include<vector>
using namespace std;
int main()
{
int M, N, K;//M为栈的最大容量,N为要检查序列的长度,K为检查次数
cin >> M >> N >> K;
stack<int>check;
int input;
for (int i = 0; i < K; i++) {
int temp = 1;
bool flag = true;
for (int j = 0; j < N; j++)
{
cin >> input;
while (check.size()<=M&&flag)
{
if (check.empty() ||input!=check.top())
{
check.push(temp++);
}
else if(input==check.top())
{
check.pop();
break;
}
}
}
if (check.size()>M) {
flag = false;
}
if (flag) {
cout << “YES” << endl;
}
else {
cout << “NO” << endl;
}
while (!check.empty()) {
check.pop();
}
}
return 0;
}
网友评论