AcWing 1535. 弹出序列---模拟
原题链接
中等
作者:
巨鹿噜噜噜路
,
2020-06-09 12:43:33
,
所有人可见
,
阅读 875
C++ 代码
#include <iostream>
#include <stack>
using namespace std;
int main() {
int n, m, k;
scanf("%d%d%d", &m, &n, &k);
for (int i = 0; i < k; i++) {
stack<int> s;
int val = 1;
bool flag = true;
for(int j = 0; j < n; j++){
int x;
scanf("%d", &x);
//进栈直至栈顶元素 == x
while (s.empty() || (s.top() < x && s.size() < m)) {
s.push(val++);
}
if (s.top() == x) s.pop(); // 出栈
else flag = false; //如果不能出栈则不符合
}
if (flag) puts("YES");
else puts("NO");
}
}
哥太牛了,第一次写这个题根本无从下手,写多久才能有这样好的思路和码力啊 😭😭
老哥,为什么你这种方法这么强,怎么想到的啊
很常规的栈模拟,多练练就没问题