1 条题解

  • 0
    @ 2026-4-28 17:14:13
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    string s1,s2;
    int f[1000];
    string ans;
    void dfs(int l1,int l2,int l3,int l4){
    	if(l1>l2||l3>l4)return ;
    	for(int i=l1;i<=l2;i++){
    		if(s2[l3]==s1[i]){
    			ans+=s1[i];
    			string str=s2;
    			string s;
    			memset(f,0,sizeof(f));
    			for(int j=l1;j<i;j++)f[s1[j]-'A']=1;
    			for(int j=l3;j<=l4;j++)if(f[s2[j]-'A'])s+=s2[j];
    			s2=s;
    			dfs(0,i-1,0,s2.size()-1);
    			s2=str;
    			s="";
    			memset(f,0,sizeof(f));
    			for(int j=i+1;j<=l2;j++)f[s1[j]-'A']=1;
    			for(int j=l3;j<=l4;j++)if(f[s2[j]-'A'])s+=s2[j];
    			s2=s;
    			dfs(i+1,l2,0,s2.size()-1);
    			s2=str;
    		}
    	}
    }
    signed main(){
    	cin>>s1>>s2;
    	dfs(0,s1.size()-1,0,s2.size()-1);
    	cout<<ans;
    	return 0;
    } 
    //DBEAC
    //ABCDE
    
    • 1

    信息

    ID
    857
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    29
    已通过
    15
    上传者