求助大佬
查看原帖
求助大佬
1331246
Guanguplussss楼主2024/7/26 11:03

问题在哪里?输出是6

#include<bits/stdc++.h>
using namespace std;
int n;
char c;
string s[1001];
int t[101];
int ans;
int f(string a,string b){
	int la=a.size();
	int lb=b.size();
	for(int a1=1;a1<min(la,lb);a1++){
		string sa=a.substr(la-a1,a1);
		string sb=b.substr(0,a1);
		if(sa==sb){
			return a1;
		}
	}
	return 0;
}
void dfs(int p,int len){
	ans=max(ans,len);
	for(int k=1;k<=n;k++){
		if(t[k]>=2)continue;
		int l=f(s[p],s[k]);
		if(l>=1){
			t[k]++;
			dfs(k,len+s[k].length()-len);
			t[k]--;
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s[i];
	}
	cin>>c;
	for(int j=1;j<=n;j++){
		memset(t,0,sizeof t);
		if(s[j][0]==c){
			t[j]=1;
			dfs(j,s[j].length());
		}
	}
	cout<<ans;
	return 0;
}
2024/7/26 11:03
加载中...