有n个物品,每个的体积V[i],价值W[i]。现有一个体积为V的背包。怎么装才能装的物品总价值最高?
代码如下:
/*
01背包
2015年8月27日09:56:48
*/
#include<stdio.h>
int dp[10000];
int max (int a , int b){
return a>b?a:b;
}
int main (){
int n ;
int C ;
int i , j ;
int V,W;
scanf("%d%d",&n,&C);
for ( i = 0 ; i <= n ; i ++){
if ( i > 0 )
scanf("%d%d",&V,&W);
for ( j = C ; j >= 0 ; j --){
if (j>=V && i > 0)
dp [j] = max (dp[j] , dp[j-V]+W);
else{
dp[j] = 0 ;
}
}
}
printf("%d",dp[C]);
return 0;
}
示例
5 10
4 9
3 6
5 1
2 4
5 1
输出
19