题目描述

单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at 和 atide 间不能相连。

输入输出格式

输入格式:

输入的第一行为一个单独的整数n (n<=20)表示单词数,以下n 行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在.

输出格式:

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

输入输出样例

输入样例#1:

5
at
touch
cheat
choose
tact
a

输出样例#1:

23

说明

连成的“龙”为atoucheatactactouchoose

源代码

# include<iostream>
# include<cstdio>
# include<string>
using namespace std;
int n;
string str[30];
int len_str,sum=0;
int times[30]={0};//存储单词出现次数void dfs(int x)
{int i,j;int p,q;int num;//存储不匹配的字符串个数int work;for(i=1;i<str[x].length();i++){num=0;for(j=1;j<=n;j++){if(times[j]<2)//出现次数少于2次{if(str[x][i]==str[j][0])//依次比较当前字符串与字符串[j]的头是否相同{p=i,q=0,work=0;while(p<=str[x].length()-1)//相同继续比较{if(str[x][p]!=str[j][q])//如果不同{num++;//不匹配的字符串个数+1work++;break;//终止}p++;q++;}if(!work&&q!=str[j].length())//符合条件,进行操作{len_str+=str[j].length()-q;//累加长度times[j]++;//累加次数dfs(j);//继续向下搜索len_str-=str[j].length()-q;//还原长度times[j]--;//还原次数}}else num++;//不同,不匹配的字符串个数+1}else num++;//大于两次,不匹配的字符串个数+1}if(num==n&&i==str[x].length()-1)//当不匹配个数与所给个数相同并且长度与所给的长度相同时{if(sum<len_str) sum=len_str;//如果最大长度小于字符串长度,令最大长度等于字符串长度return;}}
}
int main()
{int i;cin>>n;//输入单词个数nfor(i=1;i<=n+1;i++)      cin>>str[i];//输入n个单词for(i=1;i<=n;i++)//令最后一个单词为龙头,寻找以龙头开头的字符串if(str[i][0]==str[n+1][0]){times[i]++;//找到后,出现次数+1len_str=str[i].length();//记录字符串长度dfs(i);//开始搜索}cout<<sum<<endl;//输出最长长度return 0;
}

单词接龙(洛谷-P1019)相关推荐

  1. 深度优先搜索——单词接龙(洛谷 P1019)

    题目选自洛谷P1019 首先在题意上可能有些误解. 两个单词合并时,合并部分取的是最小重叠部分 相邻的两部分不能存在包含关系就是说如果存在包含关系,就不能标记为使用过. 每个单词最多出现两次. (其实 ...

  2. 信息学奥赛一本通 1220:单词接龙 | 1913:【00NOIP普及组】单词接龙 | OpenJudge NOI 2.5 8783 | 洛谷 P1019 [NOIP2000 提高组] 单词接龙

    [题目链接] ybt 1220:单词接龙 ybt 1913:[00NOIP普及组]单词接龙 OpenJudge NOI 2.5 8783:单词接龙 洛谷 P1019 [NOIP2000 提高组] 单词 ...

  3. 【DFS+回溯+字符串】【洛谷P1019】【单词接龙】

    传送门 /*[DFS+回溯+字符串][洛谷P1019][单词接龙]https://www.luogu.com.cn/problem/P1019题意:给你很多个单词 一个开头首字母 每个单词至多用2次 ...

  4. 洛谷 P1019 单词接龙 (DFS)

    题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...

  5. 洛谷P1019 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  6. 洛谷 P1019 单词接龙 Label:dfs

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  7. 洛谷——P1019 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  8. 洛谷 P1019 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  9. 洛谷 [P1019 单词接龙] {搜索|DFS} 奋斗的珂珂~

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

最新文章

  1. office2007/2010/2013/2016安装出现错误:无法安装64位版本的office,因为在您的PC上......
  2. 腾讯云连续四年登上KVM开源贡献榜,两项技术获评年度核心突破
  3. 机器学习笔记:RMSProp,Adadelta
  4. C#~异步编程再续~await与async引起的w3wp.exe崩溃-问题友好的解决
  5. aspose word 获取标题_Word干货|多级标题的自动编号怎么添加?
  6. Hadoop webHDFS设置和使用说明
  7. 一起来学SpringBoot | 第四篇:整合Thymeleaf模板
  8. Hexo博客搭建与部署
  9. c语言调用Windows自定义消息,VC自定义消息postmessage用法(消息响应函数)
  10. elementui tree获取父节点_elementUI 树状图 点击子节点获取父节点
  11. struts2教程_Struts 2教程– Struts2教程
  12. cmw500综合测试仪使用_辽宁优质继电器综合测试仪供应商-广州炫通电气科技
  13. Transwarp Inceptor 问题记录与解决
  14. SPSS使用命令语法之复制与粘贴讲解
  15. Unity工具——SVN工具
  16. 操作系统 文件管理实验报告
  17. 一篇文章 Redis 从 0 到 1
  18. 智能晾衣器全国产化电子元件推荐方案
  19. python调用rarfile进行解压rar压缩包时,报了如下错误
  20. swing文本框添加背景图片

热门文章

  1. 小白都能看懂的缓存入门
  2. 作为一个程序员,CPU的这些硬核知识你必须会!
  3. 手把手带你手写SpringMVC,剑指优秀开源框架灵魂
  4. JEECG社区第六期架构培训班报名
  5. 数学 - 线性代数导论 - #10 线性相关性、向量空间的基和维数
  6. android图片缩小和放大Matrix
  7. 【jackson 异常】com.fasterxml.jackson.databind.JsonMappingException异常处理
  8. 杭电计算机学院大学生程序设计竞赛(2015’11)
  9. 路由器在多个OSPF进程下的路由学习问题
  10. 班扎古鲁白玛的沉默(见与不见)