摘要:        
学长给的代码:可作参考void pack01(int a, int b)	//0 - 1 背包 { int i; for(i = Sum; i >= a; i ++) dp[i] = maxz(dp[i-a] + b, dp[i]);
} void packcmp(int a, int b)	//完全背包 { int i ; for(i = a; i = Sum) { packcmp(w[i], g[i]); } else { int k = 1; int amount = num[i]; while( k < amount) ...    阅读全文
posted @ 2013-07-18 18:41
cnwsycf
阅读(277)
评论(0)
推荐(0)
        
            
        
        
摘要:        
刚刚学完简单的DP,现在在接触背包问题了,然后学长们推荐我看下这篇文章,所以转载过来了。 - -希望对大家有帮助吧。P01: 01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。    阅读全文
posted @ 2013-07-18 10:31
cnwsycf
阅读(1165)
评论(0)
推荐(1)
        
                    
                
浙公网安备 33010602011771号