百度面试题 0-1背包问题-动态规划法

来源:互联网 发布:网络共享文件夹打不开 编辑:程序博客网 时间:2024/05/17 22:11
#include<stdio.h>
#include<string.h>
int main()
{
int N = 3;
int V = 5;
int C[4] = {0,1,2,3};
int W[4] = {0,60,100,120};
int f[N][V];
//memset(f,0,sizeof(int)*N*V);
for(int i=0;i<=V;i++)
f[0][i] = 0;
for(int i=1;i<=N;i++)
{
f[i][0] = 0;
for(int j = 1;j<=V;j++)
{
if(j<C[i])
f[i][j] = f[i-1][j];
else
f[i][j] = (f[i-1][j] > (f[i-1][j-C[i]]+W[i])? f[i-1][j]:(f[i-1][j-C[i]]+W[i]));
}
}
printf("value:weight: ");
for(int i=1;i<4;i++)
{
printf("%d:%d ",C[i],W[i]);
}
printf("\nThe final value is %d\n",f[N][V]);
return 0;

}

运行结果:



0 0
原创粉丝点击