【DFS】CODE[VS] 1018&&NOIP2000提高组T3 单词接龙 (日常刷题???)
来源:互联网 发布:淘宝粮仓被挤爆了 编辑:程序博客网 时间:2024/04/29 12:14
点击进入异世界
一个深搜,莫名其妙卡了3天….
一开始想到直接匹配字符串会不会太慢,于是就想到了用string自带的find()函数寻找子串位置,两个相比较的字符串位置相减,如果等于零(相互抵消)则说明可以合并,然后递归调用,每次ans取len的max
然后死活调不出来,换了char数组用strstr()还是调试不出来,后来看到了外校神犇blog
Candy?神犇的博客原文地址:http://www.cnblogs.com/candy99/p/5782167.html
又看了看数据范围(n<=20)….,直接比较好了,每次调用让“龙串”的尾与当前匹配到的字符串的首相比较,这个 l-swc>0?l-swc:0 三目条件运算指的是如果当前龙串比最长字符串的长度还要大的话,就从出超的那一位开始枚举否则从零开始,可能能够优化一些吧,博客作者说“直接从l-mx开始,要不然一定会覆盖”,个人感觉覆盖了也没事233,==。
others:
1.我觉得题目既然让求最大龙串的长度,那么我们完全可以不用管是否覆盖,每次取max就可以了
2.一个dfs,让我学会了find,substr,strstr,strcpy,strcmp等等字符串函数的用法,值了2333
3.辣鸡智障题目,不推荐做(口胡)
代码如下(前排%神犇):
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <string>using namespace std;int n;int ans,swc;//orz swc rp++int viv[60];//orz viv rp++string st[60];bool pd(string e,int bf,int j){ for(int i = bf;i < e.size();i++) { if(e[i] != st[j][i-bf]) { return false; } }return true;}inline void dfs(string e){ int l = e.size(); ans = max(ans,l); for(int i = 0;i < l;i++) { for(int j = 1;j <= n;j++) { if(viv[j] >= 2) continue; if(st[j].size() <= l-i) continue; if(!pd(e,i,j)) continue; viv[j]++; dfs(e+st[j].substr(l-i,st[j].size()-l+i)); viv[j]--; } }}int main(){ scanf("%d",&n); for(int i = 1;i <= n;i++) { cin>>st[i]; //cout<<st[i]<<endl; if(st[i].size() > swc) { swc = st[i].size(); } } cin>>st[0]; //cout<<st[0]<<endl; dfs(st[0]); printf("%d\n",ans);return 0;}
THE END
By Peacefuldoge
http://blog.csdn.net/loi_peacefuldog
1 0
- 【DFS】CODE[VS] 1018&&NOIP2000提高组T3 单词接龙 (日常刷题???)
- Noip2000 T3 单词接龙
- NOIP2000提高组 单词接龙
- dfs(洛谷1019 单词接龙NOIp2000提高组第三题)
- code【vs】1018 单词接龙(dfs)
- 【NOIP 2000 提高组 T3】单词接龙(dfs)
- 洛谷 P1019 [NOIP2000 T3] 单词接龙
- CODE[VS] 1018 单词接龙
- CODE[VS]1018 单词接龙
- [NOIP2000]单词接龙
- NOIP2000 单词接龙
- 【NOIP2000】单词接龙
- NOIP2000(4)单词接龙
- wikioi 1018 单词接龙 提高组 2000
- noip2000单词接龙(搜素)
- noip2000-单词接龙2008.11.5
- noip2000单词接龙解题报告
- Luogu P1019 [NOIP2000]单词接龙
- 安装Oracle11gR2先决条件检查失败的详细解决处理过程
- android 设置EditText可输入和不可输入状态
- Oracle笔记(一)
- JavaScript中字面量与函数的基本使用知识
- Apache web服务器修改登录端口和访问端口的方法
- 【DFS】CODE[VS] 1018&&NOIP2000提高组T3 单词接龙 (日常刷题???)
- 关于C#静态构造函数那点事
- Windows7下JDK+Tomcat的安装与配置
- DLL 的编写,导出函数
- 微信小程序学习笔记
- Git图形界面的使用
- 操作MySQL数据库
- POJ 1014 不明白为什么数据可以缩小到60跟61
- RecyclerView嵌套使用RadioGroup出现的问题