求助我的记忆化哪有问题
不加记忆化T70
加了但打错了WA30
把打错的改回来了WA0
#include<bits/stdc++.h>
using namespace std;
struct node{
string sp;
char x,y;
int cnt;
}s[110];
int f[110][110],flag[110];
int n,maxn=-987654321;
int dfs(int p,int t){
if(p==n+1)return 0;
if(f[p][t]!=-1)return f[p][t];
int maxnn=0;
for(int i=1;i<=n;i++){
if(s[i].x==s[t].y&&flag[i]==0){
flag[i]=1;
maxnn=max(maxnn,dfs(p+1,i)+s[i].cnt);
flag[i]=0;
}
}
return f[p][t]=maxnn;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i].sp;
s[i].x=s[i].sp[0];
s[i].y=s[i].sp[s[i].sp.size()-1];
s[i].cnt=s[i].sp.size();
cout<<s[i].x<<' '<<s[i].y<<' '<<s[i].cnt<<endl;
}
for(int i=1;i<=n;i++){
memset(f,-1,sizeof(f));
memset(flag,0,sizeof(flag));
flag[i]=1;
maxn=max(maxn,dfs(1,i) + s[i].cnt);
flag[i]=0;
}
cout<<maxn<<endl;
return 0;
}