1913: 【基础】简单单词接龙

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:13 解决:2

题目描述

有n个单词(1≤n≤50),每个单词由2个小写字母组成,并约定第1个单词为龙头。
例如:n=7
7个单词为
aa
ac
ab
de
bh
hk
cd
接龙的方法为前一个单词的第2个字母和后一个单词的第1个字符相同,此时,可接的方法有:
aa—ac—cd 长度为3,即龙上有3个单词
aa—ab—bh—hk 长度为4
程序要求给出单词之后,求出最长龙的长度。

输入

第一行一个整数n
接下来n行,每行2个字母表示一个单词(单词字母间无空格)

输出

输出一个整数,即最长的接长度(即龙上单词的个数)。

样例输入 复制

7
aa
ac
ab
de
bh
hk
cd

样例输出 复制

4

提示

#include<bits/stdc++.h>
using namespace std;
#define N 55
int n,cnt,ans=0;
bool used[N];
string w[N];
void dfs(int now,int cnt){
    ans=max(ans,cnt);
	for(int i=1;i<=n;i++){
		if(used[i]!=1&&w[i][0]==w[now][1]){
			used[i]=1;
			dfs(i,cnt+1);
			used[i]=0;
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>w[i];
	}
	used[1]=1;
	dfs(i,1);
	cout<<ans;
	return 0;
}