报错求助
查看原帖
报错求助
418419
ko_no_lzx_da楼主2022/6/14 16:46
#include<iostream>
#include<cmath>
#include<map>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
int  n;
char t;
int book[21];
int maxx=-1;
string a[21];
int pp(string a,string b){
	for(int i=a.length()-1;i>=0;i--){
		if(a[i]==b[0]){
			int tt=0;
			bool pd=true;
			for(int j=i;j<=a.length();j++){
				if(a[i]!=b[tt]){
					pd=false;
					break;
				}
			}
			if(pd&&i){
				return a.length()-i+1;
			}
		}
	}
	return 0;
}
void dfs(int len,string p,int num){
	if(num==n+1){
		max=x=max(maxx,p.length());
		return;
	}
	for(int i=1;i<=n;i++){
		if(!book[i]){
			book[i]=1;
			int len=pp(p,a[i]);
			for(int j=len;j<=a[i].length()-1;j++){
				p=p+a[i][j];
			}
			dfs(p.length(),p,num+1);
			book[i]=0;
		}
	}
	return;
}
int main(){
	cin >>n;
	for(int i=1;i<=n;i++){
		cin >>a[i];
	}
	cin >>t;
	for(int i=1;i<=n;i++){
		if(a[i][0]==t){
			book[i]=1;
			dfs(a[i].length(),a[i],1);
		}
	}
	cout <<maxx;
	return 0;
}

2022/6/14 16:46
加载中...