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

题目: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. maven 聚合工程 > 坑总结

    maven聚合工程子项目无法构建:父工程未 install tomcat可以运行,maven 无法编译报错,检查是否添加红色语句: <dependency> <groupId> ...

  2. 对list某个条件排序,并实现分页

    package com.jcloud.aioc.api.controller.Test; import com.alibaba.fastjson.JSON; import org.apache.poi ...

  3. MapReduce 基本优化相关参数

    MapReduce优化优化(1)资源相关参数:以下参数是在自己的 MapReduce 应用程序中配置就可以生效 mapreduce.map.memory.mb: 一个 Map Task 可使用的内存上 ...

  4. Java 面向对象(五)

    包装类 什么是包装类 在面向对象当中"一切皆对象".基本数据类型变量不是对象,比如 int a = 10; 当中就没有对象,所以就很矛盾.此时我们就可以对基本数据类型进行包装,把基 ...

  5. httpPostedFile实现WEBAPI文件上传

    public void PostUpload() { var httpPostedFile = HttpContext.Current.Request.Files; foreach(string p ...

  6. 雪花算法(DELPHI实现)

    雪花算法(DELPHI实现) 生成ID能够按照时间有序生成. 分布式系统内不会产生重复id(用workerId来做区分). 自增ID:对于数据敏感场景不宜使用,且不适合于分布式场景. GUID:采用无 ...

  7. java中 int、char、long各占多少字节数

    所谓的占用字节数 就是申请内存的时候所占的空间大小 byte    1字节 最小值是 -128(-2^7):    最大值是 127(2^7-1): boolean    至少1字节 这种类型只作为一 ...

  8. SQL-W3School-函数:SQL MID() 函数

    ylbtech-SQL-W3School-函数:SQL MID() 函数 1.返回顶部 1. MID() 函数 MID 函数用于从文本字段中提取字符. SQL MID() 语法 SELECT MID( ...

  9. window server 2008 iis7+php安装配置

    安装环境支持 Microsoft Visual C++ 2012 net framework 4.5   php配置 precision = 20 serialize_precision = 100 ...

  10. kafka shell file

    1. start kafka and schema_registry #!/bin/sh export KAFKA_HOME=/home/lenmom/workspace/software/confl ...