看一眼答案吧QAQ

单词接龙

http://www.nowcoder.com/questionTerminal/7500a6d386cb4c56b3478193e8ee64c4

include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int n,length=0,vis[1000]={0};string str[1000];
inline int check(string a,string b)
{
int p=min(a.length(),b.length());
for(int i=1;a.length()==1? i<=p:i<p;i++)
{
bool flag=true;
for(int j=0;j<i;j++)
{
if(a[a.length()-i+j]!=b[j])
{
flag=false;
break;
}
}
if(flag==true) return i;
}
return 0;
}
void dfs(string s,int length_now)
{
length=max(length,length_now);
for(int i=1;i<=n;i++)
{
if(vis[i]>1) continue;
else
{
int add=check(s,str[i]);
if(add!=0)
{
vis[i]++;
dfs(str[i],length_now+str[i].length()-add);
vis[i]--;
}
}
}</cmath></cstring></iostream>

}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>str[i];
cin>>str[n+1];
dfs(str[n+1],1);
cout<<length<<endl;
return 0;
}

全部评论

相关推荐

10-04 17:25
门头沟学院 Java
snqing:Java已经饱和了,根本不缺人。随便一个2000工资的都200人起投递
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务