记录编号 121957 评测结果 AAAAAAAAA
题目名称 [NOIP 2000PJ]单词接龙 最终得分 100
用户昵称 Gravatar席一鸣 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2014-09-21 21:47:03 内存使用 0.32 MiB
显示代码纯文本
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
string str[21];
int n,f[21][21],sum[21]={0},ans=0;
char ch;
int check(int x,int y)
{
	int d;
	for(d=1;d<min(str[x].size(),str[y].size());d++)
	  if(str[x].substr(str[x].size()-d,d)==str[y].substr(0,d))
	    return d;
	return 0;
}
void dfs(int x,int len)
{
	int i;
	if(len>ans)
	  ans=len;
	for(i=1;i<=n;i++)
	  if(f[x][i]&&sum[i]<2)
	  {
	  	sum[i]++;
	  	dfs(i,len+str[i].size()-f[x][i]);
	  	sum[i]--;
	  }
}
main()
{
	freopen("dcjl.in","r",stdin);
	freopen("dcjl.out","w",stdout);
	int i,j;
	cin>>n;
	for(i=1;i<=n;i++)
	  cin>>str[i];
	cin>>ch;
	for(i=1;i<=n;i++)
	  for(j=1;j<=n;j++)
	    f[i][j]=check(i,j);
	for(i=1;i<=n;i++)
	  if(str[i][0]==ch)
	  {
	  	sum[i]++;
	  	dfs(i,str[i].size());
	  	sum[i]--;
	  }
	cout<<ans;
	fclose(stdin);
	fclose(stdout);
}