C语言动态规划——0-1背包问题

谁可以对我说说背包问题的具体程序设计思路??
最好把源码发上来,要C的。

第1个回答  2013-05-17
以前写的 自己看吧

#include<stdio.h>

int w[5]={0,3,5,2,1},p[5]={0,9,10,7,4};
int c=7,n=4;
int cw=0,cp=0,bestp=0;
int x[10]={0};

void try(int k)
{
int i;
if(k>n)
{
for(i=1;i<=n;i++)
printf("%2d",x[i]);
printf(" %d %d\n",cw,cp);
if(bestp<cp)
bestp=cp;
}
else
{
x[k]=1;
cw=cw+w[k];
cp=cp+p[k];
if(cw<=c)
try(k+1);
x[k]=0;
cw=cw-w[k];
cp=cp-p[k];
if(cw<=c)
try(k+1);
}
}

main()
{
clrscr();
try(1);
printf("best_P=%d",bestp);
}本回答被网友采纳
第2个回答  2013-05-17
clrscr(); 这是什么东西?

我在删除它后编译成功。。

也不知道结果对不

动态规划中的0-1背包问题怎么去理解?要求给出具体实例和详细步骤...
0-1 背包问题描述如下:给定n 种物品和一个背包。物品i 的重量是 wi ,其价值为 vi ,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?在选择装入背包的物品时,对每种物品i只有2 种选择,即装入背包或不装入背包。不能 将物品i 装入背包多次,也不能只装入部分的物品...

动态规划的0-1背包问题,请高手解释下代码
简单解释一下吧 在解释之前你要知道动态规划是一个自底向上的过程 这个算法用到了一个二维数组m[][] 来存储各个坐标的价值信息 所以横坐标表示背包号码 纵坐标表示背包容量从1到c 注意该算法只能限制c是整数且每个背包的重量也是整数.然后int jMax=min(w[n]-1,c);找出w[n]-1和 c之间的小者。

计算机算法分析考试:动态规划0-1背包问题,怎么算
问题分析: 1.抽象之后背包问题转换为找到一个最优的数组,x1,x2,...,xn的0-1序列。 2.假设最优解的序列为x1,x2,...,xn,能使背包容量C的总价值最大. 如果,x1=1,则x2,...,xn是C-w1容量的背包的总价值依然是最大的序列; 如果,x1=0,则x2,...,xn是C容量的...

0-1背包问题的动态规划算法
0-1背包问题的动态规划算法主要解决的问题是如何在有限的容量内选择物品,使得总价值最大。具体来说,给定一组物品,每种物品有其重量和价值,总重量有限,选择哪些物品才能获得最大价值。此问题属于NP问题,贪婪算法无法保证最优解。定义子问题为在前i个物品中,选择总重量不超过j的物品,使得总价值最...

动态规划中的0-1背包问题怎么去理解?要求给出具体实例和详细步骤...
1号物品先试,0,1,2,的容量都不能放.所以置0,背包容量为3则里面放4.这样,这一排背包容量为4,5,6,...10的时候,最佳方案都是放4.假如1号物品放入背包.则再看2号物品.当背包容量为3的时候,最佳方案还是上一排的最价方案c为4.而背包容量为5的时候,则最佳方案为自己的重量5.背包容量为7...

背包问题(动态规划)
0-1背包问题<\/给定背包容量M和有限数量N的物品,每个物品都有重量w[i]和价值c[i]。目标是通过最优选择,使得背包内物品的总价值最大。动态规划的核心在于构建一个 dp<\/ 矩阵,其中 dp[i][j] 代表前i个物品在容量j下的最大价值。状态转移方程揭示了关键:当背包容量j小于物品i的重量时,dp[i...

0-1背包问题的多种解法代码(动态规划、贪心法、回溯法、分支限界法...
\/* 采用动态规划方法求解 \/* \/* 2.1 最优子结构性质 \/* 设(y1,y2,...,yn)是给定0-1背包问题的一个最优解,则必有 \/* 结论,(y2,y3,...,yn)是如下子问题的一个最优解: \/* max sum_{i=2 to n} (vi*xi) \/* (1) sum_{i=2 to n} (wi*xi) <= c - w1*y1 \/* (2) xi∈{0...

【学界】0-1背包问题的动态规划算法
在数学语言中,0-1背包问题定义如下:给定一组物品,每种物品都有一个重量和价值,且每种物品只能选择一次(0或1)。目标是在给定的总重量限制下,选择物品组合,使得总价值最大。更具体地,问题可以表示为:给定正整数n(物品数量)和一个容量限制W,求解一个0-1规划问题,即找到一个物品的子集,...

0-1背包问题入门详解
0-1背包问题说的是,给定背包容量W,一系列物品{weiht,value},每个物品只能取一件,获取最大值。采用动态规划求解,动态规划的一般规律都是,在什么什么前i个状态下的最大值或者最小值的前提下,然后再把i的状态的值求出来。这里我们定义一个函数,表示状态。m(1,2,3,4..i)(w)表示有1号,2...

背包问题
本程序以背包容量为5为例(用C语言编写):define N 4 \/*物品个数*\/ define W 5\/*背包容量*\/ include <stdio.h> \/ 以下为动态规划算法解0-1背包问题***\/ int min(int a,int b){ return (ab) ? a : b;} void Knap(float*v,int *w,int c,float m[N+1][W+1]){ int i,j;...

相似回答