动态规划
背包问题
剑指offer47:礼物的最大价值
在一个 m*n 的棋盘的每一个格都放有一个礼物,每个礼物都有一定价值(大于 0)。从左上角开始拿礼物,每次向右或向下移动一格,直到右下角结束。给定一个棋盘,求拿到礼物的最大价值。例如,对于如下棋盘:
1 10 3 8
12 2 9 6
5 7 4 11
3 7 16 5
应该用动态规划求解,而不是深度优先搜索,深度优先搜索过于复杂,不是最优解。
**(0-1背包):
**转自:https://blog.csdn.net/huyang0304/article/details/82286279
假如一个小偷携带者一个可以放10kg重的背包,潜入一户人家行窃,家里有4个物品,每个物品只有1个。即价值v[] = {10, 40, 30, 50},重量w[] = {5, 4, 6, 3}。
一维数组法(无须装满)
一维数组(必须装满)
完全背包
转自:https://blog.csdn.net/ls5718/article/details/52227908
有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。(类最大礼物价值)