深度优先搜索-luogu1019单词接龙

xiaoxiao2021-02-28  23

#include<bits/stdc++.h> #define LL long long #define reg register int #define f(i,a,b) for(reg i=a;i<=b;i++) using namespace std; int n; int ans,mx; string s[25]; char g; int vis[50]; void dfs(int x,int len) { mx=max(mx,len); vis[x]++; int tmp=s[x].size()-1; f(i,1,tmp) { f(j,1,n) { if(s[j][0]==s[x][i]&&vis[j]<2) { bool flag=0; int k=s[j].size()-1; f(r,i,tmp) { if(s[j][r-i]!=s[x][r]) { flag=1; break; } } if(!flag) { dfs(j,len+s[j].size()-s[x].size()+i); vis[j]--; } } } } } int main() { cin>>n; f(i,1,n) cin>>s[i]; cin>>g; f(i,1,n) { if(s[i][0]==g) { memset(vis,0,sizeof vis); mx=0; dfs(i,s[i].size()); ans=max(mx,ans); } } cout<<ans; }
转载请注明原文地址: https://www.6miu.com/read-2626722.html

最新回复(0)