2019.1.21 单词接龙
Posted qxds
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019.1.21 单词接龙相关的知识,希望对你有一定的参考价值。
主要就是简单的字符串+深搜
每次枚举可以接下去的单词 再枚举最后取i位作为后缀
枚举不到单词就取长度
上代码
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,len,book[25]; string word[25],fir,ne; bool judge(string str,string left)//判断是否可以接下去 { int l=str.size(); for(int i=0;i<l;i++) if(str[i]!=left[i])return false; return true; } void dfs(string now,int l) { for(int i=1;i<=n;i++) { if(judge(now,word[i])&&book[i]) { book[i]--; int le=word[i].size(); int l1=l+le-now.size();//加上单词后的新长度 for(int j=le-1;j>=1;j--)//枚举前缀 { ne.assign(word[i],j,le-j+1); dfs(ne,l1); } book[i]++; } } len=max(l,len);//取长度 return; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++)book[i]=2; for(int i=1;i<=n;i++)cin>>word[i]; cin>>fir; dfs(fir,1); printf("%d",len); return 0; }
以上是关于2019.1.21 单词接龙的主要内容,如果未能解决你的问题,请参考以下文章