提交时间:2024-08-21 12:54:34
运行 ID: 179881
#include <bits/stdc++.h> using namespace std; int n,ans; char m; int b[25]; string a[25]; int check(string s,string t){ int v=0; for(int i=0;i<s.size();i++){ int k=i,j; for(j=0;k<s.size()&&j<t.size();j++,k++){ if(s[k]!=t[j])break; } if(k==s.size())v=k-i; } return v; } void dfs(int l,int x){ ans=max(ans,l); for(int i=1;i<=n;i++){ if(b[i]<2){ int y=check(a[x],a[i]); if(y==0)continue; b[i]++; dfs(l+a[i].size()-y,i); b[i]--; } } } int main() { cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } cin>>m; for(int i=1;i<=n;i++){ if(a[i][0]==m){ b[i]++; dfs(a[i].size(),i); b[i]--; } } cout<<ans; }