#include <math.h> #include <stdio.h> #include <stdlib.h> struct Node{ int val,wei; }good[4000]; int f[20000]; int max(int a,int b){ if(a>b) return a; else return b; } int main(){ int n,v; scanf("%d%d",&n,&v); for(int i=1;i<=n;i++) scanf("%d%d",&good[i].wei,&good[i].val); f[v]=0; int ans=0; for(int j=1;j<=n;j++) for(int i=v;i>=0;i--){ if(good[j].wei>i) break; f[i]=max(f[i],f[i-good[j].wei]+good[j].val); ans=max(ans,f[i]); } printf("%d\n",ans); return 0; }
简单背包
简单背包