wangyiqing_DOCX @ 2024-01-31 19:50:38
为什么用手工栈0分,模板栈100分?
手工栈代码:
#include<iostream>
using namespace std;
int T;
int a[100005],b[100005],n,j=1,st[100005],top=0;
int main() {
cin>>T;
while(T--) {
cin>>n;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=1; i<=n; i++) cin>>b[i];
for(int i=1; i<=n; i++) {
st[++top]=a[i];
while(st[top]==b[j]) {
top--;
j++;
if(top==0) break;
}
}
if(top==0) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
top=0;
for(int i=1;i<=n;i++){
a[i]=0;
st[i]=0;
}
}
return 0;
}
模板栈代码:
#include<iostream>
#include<stack>
using namespace std;
int a[100005],b[100005];
stack<int> st;
int main() {
int T;
cin>>T;
while(T--) {
int n,j=1;
cin>>n;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=1; i<=n; i++) cin>>b[i];
for(int i=1; i<=n; i++) {
st.push(a[i]);
while(st.top()==b[j]) {
st.pop();
j++;
if(st.empty()) break;
}
}
if(st.empty()) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
while(!st.empty()) st.pop();
}
return 0;
}
by silent_ST @ 2024-01-31 19:54:18
你手工栈里 j 多测没初始化 吧
by chenlijin01 @ 2024-08-06 10:50:50
你while里面还要判断top!=0