记录编号 289318 评测结果 AAAAAAAAA
题目名称 [NOIP 2000PJ]单词接龙 最终得分 100
用户昵称 Gravatar森林 是否通过 通过
代码语言 C++ 运行时间 0.044 s
提交时间 2016-08-04 18:37:25 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define WJ(name) freopen(#name".in","r",stdin);freopen(#name".out","w",stdout);
#define JW fclose(stdin);fclose(stdout);
using namespace std;
int n;
int flag[30]={0};
string d[31];
char ch;
inline void QR(int& x){
	char ch;
	while(ch=getchar(),ch<'0'||ch>'9');
	x=ch-48;
	while(ch=getchar(),'0'<=ch&&ch<='9')x=x*10+ch-48;
}
inline void QW(int num){
	int cnt=0;char str[30];
	while(str[++cnt]=num%10+48,num/=10);
	while(putchar(str[cnt]),--cnt);
}
/*传入之前整个的字符串*/
inline int mfind(string s){
//	cout<<s<<endl;
	int ans=s.length(),len=s.length();
	for(int i=1;i<=n;i++){
		if(flag[i]<2){
			++flag[i];
			for(int j=len-1;j>0;j--){
//				cout<<s.substr(len-j,j)<<endl<<d[i].find(s.substr(len-j,j),0)<<endl;
				if(!d[i].find(s.substr(len-j,j),0)&&s.substr(len-j,j)!=d[i]){
					ans=max(ans,mfind(s.substr(0,len-j)+d[i]));
				}
			}
			--flag[i];
		}
	}
	return ans;
}
int main(){
	WJ(dcjl);
	QR(n);
	for(int i=1;i<=n;i++)cin>>d[i];
	cin>>ch;
	int ans=0;
	for(int i=1;i<=n;i++)
	if(d[i][0]==ch)flag[i]++,ans=max(ans,mfind(d[i]));
	QW(ans);
	JW;
	return 0;
}