关于做法的两个问题
查看原帖
关于做法的两个问题
776337
sugawara楼主2023/10/3 19:10

1.为啥题解都么有人用记忆化搜索来做

2.为啥记忆化搜索写不出来?还是我的问题?

code:

#include<iostream>
#include<string.h>
using namespace std;
const int N=1e6;
int m,n,v[N],w[N],dp[500][500];
int res(int i,int j){
	int rec;
	if(i>n) return 0;
	if(dp[i][j]!=-1) return dp[i][j];
	if(j<w[i]) return dp[i][j]=res(i+1,j);
	else return dp[i][j]=max(res(i+1,j),res(i+1,j-w[i])+v[i]);
}
int main(){
	memset(dp,-1,sizeof(dp));
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d%d",&w[i],&v[i]);
	printf("%d",res(1,m));
	return 0;
}

2023/10/3 19:10
加载中...