83分求助,第4个测试点WA
查看原帖
83分求助,第4个测试点WA
1413040
Hayya楼主2024/11/19 22:46
#include<bits/stdc++.h>
using namespace std;
char c,s[25][1000],ss[10000];
int n,len,lentmp[50][3],top,cnt[25],ans;
bool judge(char a[],char b[],int l1,int l2,int index)
{
	if(l1==1&&b[0]==c)
	{
		lentmp[index][++cnt[index]]=1;
		return true;
	}
	int x=min(l1,l2);
	for(int i=1;i<x;i++)
	{
		bool flag=true;
		for(int j=1;j<=i;j++)
		if(a[l1-i-1+j]!=b[j-1])
		{
			flag=false;
			break;
		}
		if(flag)
		{
			lentmp[index][++cnt[index]]=i;
			return true;
		}
	}
	return false;
}
void con(char a[],char b[],int &lena,int lenb,int index)
{
	if(lena==1)
	{
		strcpy(a,b);
		lena=lenb;
		return;
	}
	for(int i=lena;i<=lena+lenb-lentmp[index][cnt[index]]-1;i++)
	a[i]=b[i-lena+lentmp[index][cnt[index]]];
	lena=lena+lenb-lentmp[index][cnt[index]];
	ans=max(lena,ans);
}

void search()
{
	for(int i=1;i<=n;i++)
	if(cnt[i]<2&&judge(s[0],s[i],len,strlen(s[i]),i))
	{
		con(s[0],s[i],len,strlen(s[i]),i);
	    search();
		len=len+lentmp[i][cnt[i]]-strlen(s[i]);
	    cnt[i]--;	 
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>s[i];
	cin>>c;
	s[0][0]=c;
	len=1;
	search();
	cout<<ans<<endl;
	return 0;
}
2024/11/19 22:46
加载中...