#include<stdio.h>
#include<stdlib.h>
int max(int i,int j){
if(i>j) return i;
return j;
}
int main(){
int m,n;
scanf("%d %d\n",&m,&n);
int* value=(int*)malloc(sizeof(int)*m);
int* space=(int*)malloc(sizeof(int)*m);
for(int i=0;i<m;i++) scanf("%d",&space[i]);
for(int i=0;i<m;i++) scanf("%d",&value[i]);
int** dp=(int**)malloc(sizeof(int*)*m);
for(int i=0;i<m;i++) dp[i]=(int*)malloc(sizeof(int)*(n+1));
for(int i=0;i<=n;i++) dp[0][i]=0;
for(int i=0;i<m;i++) dp[i][0]=0;
for(int i=space[0];i<=n;i++) dp[0][i]=value[0];
for(int i=1;i<m;i++){
for(int j=1;j<=n;j++){
if(space[i]<=j){
dp[i][j]=max(dp[i-1][j],dp[i-1][j-space[i]]+value[i]);
}else{
dp[i][j]=dp[i-1][j];
}
}
}
printf("%d",dp[m-1][n]);
return 0;
}
标签:malloc,return,第六期,46,笔试,int,sizeof,include
From: https://www.cnblogs.com/llllmz/p/18079102