为啥50分
查看原帖
为啥50分
977630
java_death楼主2024/10/3 11:23
#include <bits/stdc++.h>
using namespace std;
int n,ans;
string c,a[25];
int vis[25];
void dfs(string s,int y){
    vis[y]++;
    int len=s.size();
    ans=max(ans,len);
	for(int i=1;i<=n;i++){
        //j 代表了字符串 c 第 j 个字符的位置
        //k 代表了字符串 a[i] 需要 k 个字符
		for(int j=len-1,k=1;j>=0&&k<=a[i].size();j--,k++){
            if(vis[i]<2&&s.substr(j)==a[i].substr(0,k)){
                string t=s.substr(0,j)+a[i];
                dfs(t,i);
            }
        }
	}
    vis[y]--;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>c;
    dfs(c,n);
    cout<<ans;
	return 0;
}```
2024/10/3 11:23
加载中...