DFS水题,蒟蒻WA on #2 #5 #6 帮个忙呗QAQ
查看原帖
DFS水题,蒟蒻WA on #2 #5 #6 帮个忙呗QAQ
933140
Just_Like_You楼主2023/3/7 21:57
#include <bits/stdc++.h>

using namespace std;

const int N=1e5+5;
string a[N];
int n,f[N],i,j,ans;
bool check(string a,string b)
{
	int i,j,l1=a.size(),l2=b.size(),fl;
	for(i=1;i<min(l1,l2);i++)
	{
		fl=1;
		for(j=0;j<i;j++)
		{
			if(b[j]!=a[l1-i+j])fl=0;
		}
		if(fl)return i;
	}
	return 0;
}
void dfs(string answ,int s)
{
	ans=max(ans,s);
	for(int i=0;i<n;i++)
	{
		if(f[i]>=2)continue;
		if(check(answ,a[i])>0)
		{
			f[i]++;
			dfs(a[i],s+a[i].size()-check(answ,a[i]));
			f[i]--;
		}
	}
}
int main()
{
	cin>>n;
	for(i=0;i<=n;i++)
	{
		cin>>a[i];
		f[i]=0;
	}
	dfs(" "+a[n],1);
	cout<<ans;
	return 0;
}
2023/3/7 21:57
加载中...