好像写过这个题唉算了不管了还是贴上吧(滑稽
唉 忘记清空栈了 wa了两发 mdzz
#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define ll long long
#define N 11000
const int mod = 1e9+7;
int arr[N];
int main()
{
int n;
while(~scanf("%d",&n),n) {
stack<int> s;
while(~scanf("%d",&arr[0]),arr[0]) {
while(!s.empty()) s.pop();
for(int i = 1;i < n; i++) scanf("%d",&arr[i]);
int k = 0;
for(int i = 1;i <= n; i++) {
s.push(i);
while(!s.empty() && s.top()==arr[k]) {
k++;
s.pop();
}
}
if(s.empty()) puts("Yes");
else puts("No");
}
printf("\n");
}
return 0;
}
本文分享了一段使用栈数据结构解决特定序列匹配问题的C++代码实现。通过不断清空并重新填充栈来检查输入序列是否能按照1到n的顺序正确匹配。此算法适用于编程竞赛或面试中关于栈的应用题目。
4752

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



