063.经典搜索,剪枝
include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=25;
int n;
vector
int cnt[N];
char st;
int ans=0;
void dfs(string cur){
ans=max(ans,(int)cur.size());
for(int i=0;i<n;++i){
if(cnt[i]>=2)continue;
int lc=cur.size();
int lw=words[i].size();
for(int j=1;j<lc&&j<lw;++j){
if(cur.substr(lc-j)words[i].substr(0,j)){
cnt[i]++;
dfs(cur+words[i].substr(j));
cnt[i]--;
}
}
}
}
void solve(){
cin>>n;
string s;
for(int i=0;i<n;++i){
cin>>s;
words.push_back(s);
}
cin>>st;
for(int i=0;i<n;++i){
if(words[i][0]st){
cnt[i]++;
dfs(words[i]);
cnt[i]--;
}
}
cout<<ans;
}
int main(void){
cin.tie(0)->sync_with_stdio(0);
int T=1;
//cin>>T;
while(T--)solve();
}
I am the bone of my sword

浙公网安备 33010602011771号