0-1背包问题
动态规划
-----先传程序,以后写理解
#include<stdio.h>
#include<stdlib.h>#include<string.h>
{
int i;
int j;
int max_value[100][100];
memset(max_value,0,sizeof(max_value));
for(i = 1;i <= n;i++) //物品编号
{
for(j = 0;j <=weight;j++) //重量
{
//当前物品价值 + 剩余价值
if(w[i] <= j && max_value[i - 1][j] < (value[i]) + max_value[i - 1][j - w[i]])
{
max_value[i][j] = value[i] + max_value[i - 1][j - w[i]];
}
else
{
max_value[i][j] = max_value[i - 1][j];
}
}
}
return max_value[n][weight];
}
int main()
{
int weight = 10;
int n = 5;
int cost[7] = {0,2,2,6,5,4};
int value[7] = {0,6,3,5,4,6};
printf("%d",dp(n,weight,cost,value));
return 0;
}