样例正确,提交全WA(DFS暴搜)
查看原帖
样例正确,提交全WA(DFS暴搜)
553772
GLESENA楼主2023/8/1 10:53

代码:

#include<bits/stdc++.h>
using namespace std;
char a[2][17];int n,cnt[17],sum=0,ans=0,l[17];
void dfs(char head)//深搜,head是上一个词的最后一个字 
{
	if(sum>ans)//存下最大答案 
	{
		ans=sum;
	}
	for(int i=1;i<=n;i++)
	{
		if(a[0][i]==head&&cnt[i]==0||head=='0')//如果单词尚未被选中 
		{
			cnt[i]=1;//标记为已选中 
			sum=sum+l[i];//复杂度++ 
			dfs(a[1][i]);//递归 
			sum-=l[i]; 
			cnt[i]=0;
		}
	}
}
int main()
{
	scanf("%d",&n);
	string s;
		getline(cin,s);
	for(int i=1;i<=n;i++)
	{
		getline(cin,s);//输入 
		a[0][i]=s[0];//单词的第一个字 
		a[1][i]=s[s.size()-1];//单词的最后一个字 
		l[i]=s.size();//单词长度 
	}
	dfs('0');
	cout<<ans;
	return 0;
}
2023/8/1 10:53
加载中...