递归排列枚举2(c++)
有 n 个单词( 1≤n≤50 ),每个单词由 2 个小写字母组成,并约定第 1 个单词为龙头。8 个单词为:aa、ac、ab、de、bh、hk、cd、af。此时,可接的方法有: aa-ac-cd-de 长度为 4 ,即龙上有 4 个单词。接龙的方法为前一个单词的第 2 个字母和后一个单词的第 1 个字符相同。也可以接:aa-ab-bh-hk,长度为 4。程序要求给出单词之后,求出最长龙的长度。还
·
简单单词接龙
有 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;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐




所有评论(0)