luogu1019【2000提高】单词接龙(字符串+dfs)
2017-08-08 23:14
471 查看
没啥可说的。。。就去dfs就好了。。
upd:最新版看这里:传送门
upd:最新版看这里:传送门
#include<cstdio> #include<cstring> int n,a[21],ans=0,sum=0; char s[21][21],ss[1]; int cmp(int i,int k){ int x=0; if(a[i]>=2) return x; for(int j=1;s[k][j]!=0;j++){ if(s[i][0]==s[k][j]){ int xx=strlen(s[k])-j; if(xx>=strlen(s[i])) xx=0; else{ for(int ii=1;ii<xx;ii++){ if(s[k][j+ii]!=s[i][ii]) xx=0; } } if(xx!=0) x=xx; } } return x; } void dfs(int k){ for(int i=1;i<=n;i++){ int x=cmp(i,k); if(x!=0){ sum=sum+strlen(s[i])-x; a[i]++; if(sum>ans) ans=sum; dfs(i); sum=sum-strlen(s[i])+x; a[i]--; } } } int main(){ //freopen("a.in","r",stdin); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%s",&s[i]); a[i]=0; } scanf("%s",ss); for(int i=1;i<=n;i++){ if(s[i][0]==ss[0]){ sum+=strlen(s[i]); if(sum>ans) ans=sum; a[i]++; dfs(i); sum-=strlen(s[i]); a[i]--; } } printf("%d",ans); return 0; }
相关文章推荐
- 【NOIP2000】【Luogu1019】单词接龙
- 【DFS】CODE[VS] 1018&&NOIP2000提高组T3 单词接龙 (日常刷题???)
- 【NOIP 2000 提高组 T3】单词接龙(dfs)
- wikioi 1018 单词接龙 提高组 2000
- 蓝桥杯 算法训练 单词接龙 _DFS_搜索 字符串比较
- [luoguP1019] 单词接龙(DFS)
- Codevs 1018 单词接龙 DFS --2000年NOIP全国联赛普及组NOIP全国联赛提高组
- NOIP2000单词接龙[DFS]
- NOIP2000提高组 单词接龙
- DFS——[ 2000Noip提高组第三题 ]单词接龙
- 【搜索】单词接龙 luogu-1019
- code1018 单词接龙 dfs,字符串处理
- ALGO-18 单词接龙 —— DFS与字符串处理(java)
- ACM [NOIP2000] 单词接龙(水DFS枚举注意尽量减小常数)
- NOIP 2000 提高组 复赛 单词接龙
- [NOIP提高组2000]单词接龙
- [NOIP2000] 提高组 洛谷P1019 单词接龙
- P1019 单词接龙【DFS+字符串】
- codevs 1018 [noip 2000 提高] 单词接龙
- 洛谷 P1019 [NOIP2000 T3] 单词接龙