看吧,多简单啊,没有人受伤的世界完成了。                                                                                            ——《我的青春恋爱物语果然有问题》

题目:https://www.luogu.org/problem/P1019

这一题是有点困难的字符串的深搜题,感觉好多题目一碰上字符串就变得麻烦不少。

可能是我太弱了

这题我的思路是这样的——

首先,先把每一次的接龙所得到的字符串存起来。

然后,每一次深搜,对于每个单词,看它能否接到原字符串后。

再然后,把字符串接上去,同时减少那个单词剩余可用次数。

最后,添上回溯。

我还要说一下那个包含问题:

其实包含不包含不重要,包含了跟不用它是一样的。

所以我就没有刻意去处理包含,也有可能是处理了我自己并没有意识到,望dalao指点

#include<bits/stdc++.h>
using namespace std;
int n,maxx=-;
int a[]={};
char c;
char s[][],ans[];
void dfs()
{
int len=strlen(ans);
for(int i=len-;i>=;i--)//从已经接好的单词(?)的末尾开始找
{
for(int j=;j<=n;j++)//遍历可以接上去的单词
{
if(len-i>strlen(s[j])) continue;//优化,查单词会快得多
int flag=;
for(int k=;k<len-i;k++)
if(s[j][k]!=ans[i+k])
flag=;//看是否可以接上去
if(flag==&&a[j]!=)
{
int wyq=strlen(s[j]),wyc=len;
for(int k=wyc-i;k<wyq;k++) ans[len++]=s[j][k];//会多加一个len值
a[j]--;//单词可用剩余次数少一次
if(maxx<len) maxx=len;
dfs();
for(int k=wyc-i-;k<wyq;k++) ans[len--]=;//删去加进去的单词
//但会把最右边的位置多减一个
len++;//要加一补齐
a[j]++;//回溯
}
}
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%s",s[i]);
a[i]=;//保证每个单词只用两次
}
cin>>c;
ans[]=c;
dfs();
printf("%d",maxx);
return ;
}

洛谷 P1019单词接龙的更多相关文章

  1. 洛谷 P1019 单词接龙【经典DFS,温习搜索】

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

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

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

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

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

  4. 洛谷 p1019 单词接龙

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

  5. [NOIP2000] 提高组 洛谷P1019 单词接龙

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

  6. 洛谷——P1019 单词接龙(NOIP2000 T3)

    https://www.luogu.org/problem/show?pid=1019#sub 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母, ...

  7. 洛谷P1019——单词接龙(DFS暴力搜索)

    https://www.luogu.org/problem/show?pid=1019#sub 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母, ...

  8. 洛谷P1019 单词接龙题解(超详细注释)

    https://www.luogu.org/problem/P1019 #include<cstdio> #include<cstring> #include<iostr ...

  9. 洛谷1019 单词接龙 字符串dfs

    问题描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...

随机推荐

  1. nodeJs 初学案例摘要

    在学习nodeJs的时候,照着文档做的,但是到最后的上传文件显示图片总是报错, 所用的fs.renameSync出错:Error: EXDEV, cross-device link not permi ...

  2. BZOJ1856[Scoi2010]字符串——组合数学+容斥

    题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgww想要知道满足 ...

  3. case设计及验证:入口+页面+展示

    测试个性CB问题, 功能整体结构为:入口+页面+展示 总结: 1. 产品文档为主,其次是服务端接口返回.数据结构及字段值确认.结合实际场景检查是否有遗漏或不合理. 2. 以字段为维度,每个字段的检查点 ...

  4. What is the yield keyword used for in C#?

    What is the yield keyword used for in C#? https://stackoverflow.com/a/39496/3782855 The yield keywor ...

  5. npm package.json配置整理

    通过npm init 创建 package.json文件 参数: name:项目名字 version: 版本号 description: 项目介绍 main: 项目的入口文件 scripts: npm ...

  6. linux物理内存与虚拟内存

    http://www.360doc.com/content/14/0123/14/14450281_347336709.shtml 1.查看内存占用情况 $ free -m -h total used ...

  7. 原生JavaScript实现函数的防抖和节流

    原生JavaScript实现函数的防抖和节流 参考:https://www.jianshu.com/p/c8b86b09daf0 想详细了解的直接戳上面链接了,讲得非常清楚.下面只给代码和我自己写的注 ...

  8. 目录:JAVA

    收藏: Java:类与继承

  9. Python中的logging模块就这么用

    Python中的logging模块就这么用 1.日志日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICALDEBUG:详细的信息,通常只出现在诊断问题 ...

  10. c# 扫描局域网IP列表的几种方法

    很多软件都有获知局域网在线计算机IP的功能,但是在.net怎么实现呢,有好多方法, 下面我给大家介绍几种,供大家参考. 1.微软社区上介绍了使用Active Directory 来遍历局域网 利用Di ...