acwing1117. 单词接龙(深搜dfs)[通俗易懂]

acwing1117. 单词接龙(深搜dfs)[通俗易懂]单词接龙是一个与我们经常玩的成语接龙相类似的游戏。现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”,每个单词最多被使用两次。在两个单词相连时,其重合部分合为一部分,例如 beast 和 astonish ,如果接成一条龙则变为 beastonish。我们可以任意选择重合部分的长度,但其长度必须大于等于1,且严格小于两个串的长度,例如 at 和 atide 间不能相连。输入格式输入的第一行为一个单独的整数 n 表示单词数,以下 n 行每行有一个单词(只含有大写或小写字母

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

单词接龙是一个与我们经常玩的成语接龙相类似的游戏。

现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”,每个单词最多被使用两次。

在两个单词相连时,其重合部分合为一部分,例如 beast 和 astonish ,如果接成一条龙则变为 beastonish。

我们可以任意选择重合部分的长度,但其长度必须大于等于1,且严格小于两个串的长度,例如 at 和 atide 间不能相连。

输入格式
输入的第一行为一个单独的整数 n 表示单词数,以下 n 行每行有一个单词(只含有大写或小写字母,长度不超过20),输入的最后一行为一个单个字符,表示“龙”开头的字母。

你可以假定以此字母开头的“龙”一定存在。

输出格式
只需输出以此字母开头的最长的“龙”的长度。

数据范围
n≤20

输入样例:
5
at
touch
cheat
choose
tact
a
输出样例:
23

提示
连成的“龙”为 atoucheatactactouchoose。

题解
深搜dfs

#include<bits/stdc++.h>
using namespace std;
int n;
const int N = 1e2 + 10;
string word[N];
const int INF = 0x3f3f3f3f;
int res = 0;
vector<int>edge[N];
int g[N][N],num[N];
void dfs(int len,int id){ 

res = max(res,len);
for(auto &a : edge[id]){ 

if(num[a] != 2){ 

num[a] ++;
dfs(len + word[a].size() - g[id][a],a);
num[a] --;
}
}
}
int main(){ 

char x;
cin>>n;
for(int i = 0;i < n;i ++){ 

cin>>word[i];
}
cin>>x;
for(int i = 0;i < n;i ++){ 

for(int j = 0;j < n;j ++){ 

for(int k = 1;k < min(word[i].size(),word[j].size());k ++){ 

if(word[i].substr(word[i].size() - k) == word[j].substr(0,k)){ 

g[i][j] = k;
edge[i].push_back(j);
break;
}
}
}
}
for(int i = 0;i < n;i ++){ 

if(word[i][0] == x)edge[n].push_back(i),g[n][i] = 1;
}
dfs(1,n);
cout<<res<<endl;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168667.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • smtp.gmail.com_aspnet网站

    smtp.gmail.com_aspnet网站//ASP.NET与GMail免费SMTP服务器//usingSystem.Net.Mail;MailMessagemessage=newMailMessage();message.From=newMailAddress(“User@gmail.com”);//…newMailAddress(“User@gmail.com”,”显示的名字”);me

  • 已知前序遍历和中序遍历求二叉树[通俗易懂]

    已知前序遍历和中序遍历求二叉树[通俗易懂]描述输入某二叉树的前序遍历和中序遍历的结果,请输出后序遍历序列。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},重建二叉树并返回后序遍历序列输入输入某二叉树的前序遍历和中序遍历的结果输出输出后序遍历序列输入样例1 12473568…

  • paddle tensorflow_平板屏保图片

    paddle tensorflow_平板屏保图片 tf.pad()文档如下,pad(tensor,paddings,mode=’CONSTANT’,name=None,constant_values=0)   Padsatensor.      Thisoperationpadsa`tensor`accordingtothe`paddings`youspecify.   `paddings`is…

  • SLAM:gmapping

    SLAM:gmappingPackageSummaryReleasedDocumentedThispackagecontainsaROSwrapperforOpenSlam’sGmapping.Thegmappingpackageprovideslaser-basedSLAM(SimultaneousLocalizationandMapping),asaROSn…

  • ZigBee协议栈解析

    ZigBee协议栈解析ZigBee技术是物联网领域最常用的无线技术之一,如果我们要做基于ZigBee技术的物联网应用,最好对ZigBee协议栈有一个基本的了解。这篇文章对ZigBee协议栈做一个简单明了的介绍。概述本文准备介绍的ZigBee协议栈是ZigBee2007,也是目前业界最常用的标准版本,对于ZigBee协议栈的演进历程,可以参加《5分钟了解Zigbee的前世今生》。Zi…

  • 喊山第二部_软组raid0

    喊山第二部_软组raid0原题链接喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价值,便把它作为一种交流工具世代传袭使用。(图文摘自:http://news.xrxxw.com/newsshow-8018.html)一个山头呼喊的声音可以被临近的山头同时听到。题目假设每个山头最多有两个能听到它的临近山头。给定任意一个发

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号