求助
查看原帖
求助
1377954
zcx20242024楼主2024/10/4 12:54
#include<bits/stdc++.h>
using namespace std;
int n,kx[25];
string a[25];
char kt;
int dd(string a,string b)
{
	int k=min(a.size(),b.size())-1;
	for(int i=0;i<=k;i++)
	{
		int flag=0;
		for(int j=0,g=i;j<=i&&g>=0;j++,g--)
		{
			if(a[a.size()-g-1]!=b[j]) flag=1;
		}
		if(flag==0)
		{
			return i+1;
		}
	}
	return 0;
}
int maxx=0;
int dp(string h,int suma,int sumb)
{
	suma+=h.size();
	int flag1=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i].size()==h.size())
		{
			int flag=0;
			for(int j=0;j<h.size();j++)
			{
				if(a[i][j]!=h[j]) flag=1;
			}
			if(flag=0) continue;
		}
		int e=dd(h,a[i]);
		if(e&&kx[i]<2)
		{
			sumb+=e;
			flag1=1;
			kx[i]++;
			dp(a[i],suma,sumb);
		}
	}
	if(flag1==0)
	{
		if(suma-sumb>maxx) maxx=suma-sumb;
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	cin>>kt;
	for(int i=1;i<=n;i++)
	{
		if(char(a[i][0])==kt) dp(a[i],0,0);
	}
	cout<<maxx;
	return 0;
}

2024/10/4 12:54
加载中...