这是今天看到栈混洗时根据思路自己写的代码,问题是当输出No的时候没有问题,但是应该输出Yes时却运行错误,是什么原因
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
stack<int> a;
stack<int> b;
int main() {
int n,k[101];
cin >> n;
for(int i = 1;i <= n;i++) {
cin >> k[i];
}
for(int i = n;i >= 1;i--) {
a.push(k[i]);
}
for(int i = 1;i <= n;i++) {
cin >> k[i];
}
for(int i = n;i >= 1;i--) {
if(k[i] == a.top())
a.pop();
else
b.push(k[i]);
}
while(b.top() == a.top()) {
b.pop();
a.pop();
}
if(!b.empty())
cout << "No";
else
cout << "Yes";
return 0;
}