AC

lzhh_lzhh26  •  1个月前


#include<bits/stdc++.h> 
using namespace std;
string s1,s2;		//s1前序遍历,s2中序遍历 
int cnt=1,ans;
void maketree(int left1,int right1,int left2,int right2){
	char root=s1[left1];
	int find;
	for(find=left2;find<=right2;find++){
		if(s2[find]==root){
			maketree(left1+1, left1+find-left2, left2, find-1);		//左子树 
			maketree(right1-(right2-find)+1, right1, find+1, right2);		//右子树
			if(cnt%2==1) ans+=root-'0';
			cnt++;
		}
	}
} 
int main(){
	cin>>s1>>s2;
	maketree(0,s1.size()-1,0,s2.size()-1);
	cout<<ans<<endl;
	return 0;
}


评论:

请先登录,才能进行评论