使用一個(gè)臨時(shí)變量temp,初始值為1负蠕,代表模板數(shù)據(jù)
對(duì)于輸入數(shù)據(jù)的判斷:
建立一個(gè)while循環(huán)蛙埂,以及bool變量flag,條件為棧的size不超過(guò)最大值和flag為真
如果當(dāng)前棧為空遮糖,或者輸入數(shù)據(jù)不等于棧頂元素绣的,則加一個(gè)更大的(自增1)的temp入棧
如果等于棧頂元素則出棧
while循環(huán)結(jié)束之后判斷棧是否溢出,如果溢出則將flag設(shè)置為false
新一輪開(kāi)始之前如果棧不為空則應(yīng)首先清空
#include<iostream>
#include<stack>
#include<vector>
using namespace std;
int main()
{
int M, N, K;//M為棧的最大容量欲账,N為要檢查序列的長(zhǎng)度屡江,K為檢查次數(shù)
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;
}