求助,调不出来
查看原帖
求助,调不出来
728840
covonant楼主2024/7/24 22:36
#include<bits/stdc++.h>
using namespace std;
int n,ans;
char c;
string s[25];
int v[25];
int check(string a,string b){
	if(a.size()==1) if(b[0]==a[0]) return 0; else return -1;
	else if(b.find(a)!=-1) return 0; 
	int tot=-1;
	for(int i=0;i<a.size();i++){
		int f=b.find(a.substr(i));
		if(f!=-1&&f==0)
			tot=i;
	}
	return tot;
}
string add(int tot,string a,string b){
	return a+b.substr(tot+1);	
}
void loong(string str){
	ans=max(ans,(int)str.size());
	for(int i=1;i<=n;i++){
		if(v[i]>=1) continue;
		int x=check(str,s[i]);
		if(x!=-1){
			v[i]++;
			loong(add(x,str,s[i]));
			v[i]--;
		}
	}
}
int main(){
	cin>>n;
	memset(v,-1,sizeof(v));
	v[0]=0;
	for(int i=1;i<=n;i++) cin>>s[i];
	cin>>s[0];
	loong(s[0]);
	cout<<ans<<endl;
	return 0;
}

2024/7/24 22:36
加载中...