codevs1018单词接龙 lsj版+注释
来源:互联网 发布:淘宝天猫分销平台 编辑:程序博客网 时间:2024/06/06 09:50
深度优先搜索,回溯
#include<iostream>#include<string>using namespace std;int n,b[21],num,sum;//b是判重用的,num是最终输出的最长串,sum是目前串长度 string a[21]; //char c; //头 int dfs(char x,string s)//上一串的尾字符和上一个单词 { if(sum>num) num=sum; for(int i=1;i<=n;i++) { for(int j=0;j<a[i].size();j++) { if(a[i][j]==x) //如果该串中可能有与上串重合部分 { int flag=0; //判定 int ii=s.size(); //见下文s[--ii] for(int k=j;k>=0;k--) { if(a[i][k]!=s[--ii]) flag=1; //如果不匹配则flag=1 } if(!flag&&b[i]<2) //如果尾字符前部分完全匹配 { sum+=a[i].size()-j-1;// b[i]++; //同main函数中的搜索 dfs(a[i][a[i].size()-1],a[i]); sum-=a[i].size()-j-1; b[i]--; } } } }}int main(){ cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } cin>>c; //头 for(int i=1;i<=n;i++) { if(a[i][0]==c) { b[i]++; sum+=a[i].size(); dfs(a[i][a[i].size()-1],a[i]); sum-=a[i].size();//回溯 b[i]--; //回溯 } } cout<<num;}
阅读全文
0 0
- codevs1018单词接龙 lsj版+注释
- codevs1018 单词接龙(DFS)
- codevs1018单词接龙
- 单词接龙codevs1018(noip2000)
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- LeetCode——133.Clone Graph && 621.Task Scheduler
- 2005 Histograms of Oriented Gradients for Human Detection(Navneet Dalal et al)读后感
- JQuery
- c/c++中define用法详解及代码示例
- Logcat——更优雅的日志分析
- codevs1018单词接龙 lsj版+注释
- 单例模式的使用场景(作用)
- 【转载】 OO ALV详解 BY 江正军
- C++中的inline用法
- Java语言基础——常量的概述
- 关于_runWithMainScene:transitionContext:completion错误的测试
- BZOJ 1016 [JSOI2008]最小生成树计数 Kruskal Matrix-Tree定理
- 数据库的事务(transaction)
- 图书销售系统开发过程