问题描述:
有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?
样例输入:
4 8
2 3
3 4
4 5
5 6
样例输出:
10
程序代码:
#include<stdio.h>
void Findmax(int number,int capacity);
int Max(int a,int b);
#define N 10
int v[N],w[N],dp[N][N];
int main()
{
int number,capacity,i,j;
while(scanf("%d%d",&number,&capacity)!=EOF)
{
for(i=1;i<=number;i++)
scanf("%d%d",&v[i],&w[i]);
Findmax(number,capacity);
printf("%d\n",dp[number][capacity]);
}
return 0;
}
void Findmax(int number,int capacity)
{
int i,j;
for(i=1;i<=number;i++)
for(j=1;j<=capacity;j++)
{
if(j<v[i])
dp[i][j]=dp[i-1][j];
else
dp[i][j]=Max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);
}
}
int Max(int a,int b)
{
if(a>b)
return a;
return b;
}