01背包问题

来源:互联网 发布:android js交互框架 编辑:程序博客网 时间:2024/06/05 06:06

#include <iostream>#include <cstring>using namespace std;const int MAX = 100;int n,W;int w[MAX],v[MAX];int book[100][100];int rec(int i,int j){   if(book[i][j] >= 0) return book[i][j];   int res;//价值   if(i == n) res = 0;   else if(j < w[i]) res = rec(i+1,j);   else res = max(rec(i+1,j),rec(i+1,j-w[i])+v[i]);   return book[i][j] = res;}int main(){    memset(book,-1,sizeof(book));    cin>>n>>W;    for(int i=1;i<=n;i++)        cin>>w[i]>>v[i];    cout<<rec(0,W);    return 0;}