#include<bits/stdc++.h>
using namespace std;
string s1,s2; //中序 后序
vector<int> a;
int ans=0;
void maketree(int l1,int r1,int l2,int r2){ //1中2后
char root=s2[r2];
for(int f=l1;f<=r1;f++){
if(s1[f]==root){ //中序中找到根节点
a.push_back(root-'0');
maketree(l1,f-1,l2,l2+(f-1-l1)); //左子树
maketree(f+1,r1,r2-1-(r1-f-1),r2-1); //右子树
}
}
}
int main(){
cin>>s1>>s2;
maketree(0,s1.size()-1,0,s2.size()-1);
for(int i=0;i<a.size();i+=2) ans+=a[i];
cout<<ans<<endl;
return 0;
}
全部回复 共 0 条
还没有人回复。往下写第一条。
发表回复
登录后即可回复本帖,与出题人和同学一起讨论。
登录