poj 3624 最基本01背包问题

来源:互联网 发布:仓廪实而知礼节 编辑:程序博客网 时间:2024/06/05 03:09
#include <iostream>#include<cstring>#include <stdio.h>using namespace std;#define MAX_V (4000+1)#define MAX_F (13000+1)int n,m;int W[MAX_V];int D[MAX_V];int F[MAX_F];int main(){while(cin>>n>>m){for(int i=1;i<=n;i++){cin>>W[i]>>D[i];}memset(F,0,sizeof(F));for(int i=1;i<=n;i++){for(int v=m;v>=W[i];v--){if( F[ v - W[i] ] + D[i] > F[v])F[v] = F[ v - W[i] ] + D[i];}}int maxi = -1;for(int v=m;v>=0;v--)if(F[v] > maxi)maxi = F[v];cout<<maxi<<endl;}}