这个分越改越少
  • 板块学术版
  • 楼主夜阑
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/5/3 09:01
  • 上次更新2023/10/28 02:20:56
查看原帖
这个分越改越少
243263
夜阑楼主2022/5/3 09:01

P1278 单词游戏

求助我的记忆化哪有问题

不加记忆化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));
        maxn=max(maxn,dfs(1,i) + s[i].cnt);
        flag[i]=0;
    }
    cout<<maxn<<endl;
    return 0;
}
2022/5/3 09:01
加载中...