简单单词接龙
有 n 个单词( 1≤n≤50 ),每个单词由 2 个小写字母组成,并约定第 1 个单词为龙头。 例如:n=8。8 个单词为:aa、ac、ab、de、bh、hk、cd、af
接龙的方法为前一个单词的第 2 个字母和后一个单词的第 1 个字符相同
此时,可接的方法有: aa-ac-cd-de 长度为 4 ,即龙上有 4 个单词。
也可以接:aa-ab-bh-hk,长度为 4 。
还可以接:aa-af,长度为 2。
程序要求给出单词之后,求出最长龙的长度。
输入复制
7
aa
ac
ab
de
bh
hk
cd
输出复制
4
#include <iostream>
#include <string>
using namespace std;
string a[100];
string c[100];
int ma = 0;
int f[100];
void aaa(int,int);
int main()
{int n;cin>>n;for(int i = 0;i<n;i++){cin>>a[i];}aaa(n,0);cout<<ma;return 0;
}
void aaa(int n,int sum)
{if(sum>=n){return;}for(int i = 0;i<n;i++){if(sum==0){c[sum] = a[0];f[0] = 1;ma = max(ma,sum+1);aaa(n,sum+1);f[0] = 0;}else if(c[sum-1][1]==a[i][0]&&f[i]==0){c[sum] = a[i];f[i] = 1;ma = max(ma,sum+1);aaa(n,sum+1);f[i] = 0;}}return;
}