poj3624--最赤裸的01背包

poj3624--最赤裸的01背包
不多说了,最赤裸的01背包问题。
01背包压缩的动态方程为f[v]=Max(f[v],f[v-Ci]+Wi)。
详情参阅《背包九讲》: http://wenku.baidu.com/view/519124da5022aaea998f0f22.html
以下是本题代码:

#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#define LEN 20000
#define LENN 4000
typedef 
struct 
{
    
int w;
    
int d;
}Charm;
int Max(int a, int b)
{
    
if(a > b)
        
return a;
    
return b;
}
int main()
{
    
int i, j;
    Charm cm[LENN];
    
int N, M;
    
int f[LEN];
    
while(scanf("%d%d"&N, &M) != EOF)
    {
        
for(i = 1; i <= N; i++)
            scanf(
"%d%d"&cm[i].w, &cm[i].d);
        memset(f, 
0sizeof(f));
        
for(i = 1; i <= N; i++)
            
for(j = M; j >= cm[i].w; j--)
                f[j] 
= Max(f[j], f[j - cm[i].w] + cm[i].d);
        printf(
"%d\n", f[M]);
    }
    
//system("pause");
}

你可能感兴趣的:(poj3624--最赤裸的01背包)