单词接龙(洛谷-P1019)
题目描述
单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 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)相关推荐
- 深度优先搜索——单词接龙(洛谷 P1019)
题目选自洛谷P1019 首先在题意上可能有些误解. 两个单词合并时,合并部分取的是最小重叠部分 相邻的两部分不能存在包含关系就是说如果存在包含关系,就不能标记为使用过. 每个单词最多出现两次. (其实 ...
- 信息学奥赛一本通 1220:单词接龙 | 1913:【00NOIP普及组】单词接龙 | OpenJudge NOI 2.5 8783 | 洛谷 P1019 [NOIP2000 提高组] 单词接龙
[题目链接] ybt 1220:单词接龙 ybt 1913:[00NOIP普及组]单词接龙 OpenJudge NOI 2.5 8783:单词接龙 洛谷 P1019 [NOIP2000 提高组] 单词 ...
- 【DFS+回溯+字符串】【洛谷P1019】【单词接龙】
传送门 /*[DFS+回溯+字符串][洛谷P1019][单词接龙]https://www.luogu.com.cn/problem/P1019题意:给你很多个单词 一个开头首字母 每个单词至多用2次 ...
- 洛谷 P1019 单词接龙 (DFS)
题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...
- 洛谷P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 洛谷 P1019 单词接龙 Label:dfs
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 洛谷——P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 洛谷 P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 洛谷 [P1019 单词接龙] {搜索|DFS} 奋斗的珂珂~
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
最新文章
- office2007/2010/2013/2016安装出现错误:无法安装64位版本的office,因为在您的PC上......
- 腾讯云连续四年登上KVM开源贡献榜,两项技术获评年度核心突破
- 机器学习笔记:RMSProp,Adadelta
- C#~异步编程再续~await与async引起的w3wp.exe崩溃-问题友好的解决
- aspose word 获取标题_Word干货|多级标题的自动编号怎么添加?
- Hadoop webHDFS设置和使用说明
- 一起来学SpringBoot | 第四篇:整合Thymeleaf模板
- Hexo博客搭建与部署
- c语言调用Windows自定义消息,VC自定义消息postmessage用法(消息响应函数)
- elementui tree获取父节点_elementUI 树状图 点击子节点获取父节点
- struts2教程_Struts 2教程– Struts2教程
- cmw500综合测试仪使用_辽宁优质继电器综合测试仪供应商-广州炫通电气科技
- Transwarp Inceptor 问题记录与解决
- SPSS使用命令语法之复制与粘贴讲解
- Unity工具——SVN工具
- 操作系统 文件管理实验报告
- 一篇文章 Redis 从 0 到 1
- 智能晾衣器全国产化电子元件推荐方案
- python调用rarfile进行解压rar压缩包时,报了如下错误
- swing文本框添加背景图片
热门文章
- 小白都能看懂的缓存入门
- 作为一个程序员,CPU的这些硬核知识你必须会!
- 手把手带你手写SpringMVC,剑指优秀开源框架灵魂
- JEECG社区第六期架构培训班报名
- 数学 - 线性代数导论 - #10 线性相关性、向量空间的基和维数
- android图片缩小和放大Matrix
- 【jackson 异常】com.fasterxml.jackson.databind.JsonMappingException异常处理
- 杭电计算机学院大学生程序设计竞赛(2015’11)
- 路由器在多个OSPF进程下的路由学习问题
- 班扎古鲁白玛的沉默(见与不见)