Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
109224 赵德明 [NOIP2000 普及组/提高组] 单词接龙 C++ 解答错误 50 0 MS 256 KB 927 2023-11-07 13:44:17

Tests(3/6):


#include<bits/stdc++.h> using namespace std; #define int long long int msum=0; int n,ba[25]; string a[25]; char f; int pd(int ai,int bi,int al,int bl){ string t; int mt=0; bl=min(al,bl); for(int i=1;i<=bl;i++){ t=a[ai].substr(al-i,i); if(a[bi].find(t)==0) mt=i; else break; } return mt; } void dfs(int ii,int sum,int l){ if(ii==1){ for(int i=1;i<=n;i++){ if(a[i][0]==f){ ba[i]++; dfs(i+1,a[i].size(),i); ba[i]--; } } } else{ bool b=1; int alen=a[l].size(),blen; for(int i=1;i<=n;i++){ if(ba[i]<2){ blen=a[i].size(); int r=pd(l,i,alen,blen); if(r>0){ ba[i]++; dfs(ii+1,sum+blen-r,i); ba[i]--; b=0; } } } if(b){ msum=max(msum,sum); } } } signed main(){ memset(ba,0,sizeof(ba)); cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } cin>>f; dfs(1,0,0); cout<<msum; return 0; }


测评信息: