背包问题
文章平均质量分 69
田园园野
我坚持,我坚信
展开
-
01背包
01背包 题目 有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 将前i件物品放入容量为j的背包中,只考虑第i件物品(放或不放),那么前i件物品能获得的最大价值由前i-1件物品能获得的最大值有关。 如果不放原创 2017-04-30 12:18:14 · 401 阅读 · 0 评论 -
多重背包
多重背包 题目: 有n种物品和一个容量为kg的背包。第i种物品最多有num件可用,每件重w,价值是v。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。 题解: 这个问题非常类似于完全背包问题,所不同的是每种物品为有限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、……取num件很多种。令f[i,v]表示前i种物品恰放入一个原创 2017-05-04 21:06:27 · 238 阅读 · 0 评论 -
完全背包
题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是w,价值是v。将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。 物品 1 2 3 4 5 w 3 2 4 1 6 v 4 5 7 6 2 这个问题非常类似于01背包问题,所不同的是每原创 2017-05-04 20:38:53 · 187 阅读 · 0 评论 -
简单背包问题
1、简单背包问题:递归:var flag bool var W = make([]int,40) func dfs(s int,n int)(bool){ if s==0 { return true } if s<0 || (s>0 && n<1){ return false } if dfs(s-W[n],n-1) { fmt.Print...原创 2018-06-26 11:30:52 · 196 阅读 · 0 评论