动态规划(一)
文章目录
动态规划(一)
常用模型-背包
01 背包问题
问题 : 给N个物品和容量是V的背包,每个物品有两个属性,一个是物品的体积Vi,还有一个是物品的价值Wi。每件物品最多只用一次。目标是选出的物品装在背包中的总价值最大,问题是最大的价值是多少?
问题考虑方向:
题目
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。
第 i 件物品的体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。
输入格式
第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。
输出格式
输出一个整数,表示最大价值。
数据范围
0<N,V≤1000 0<vi,wi≤1000
输入样例
|
|
输出样例:
|
|
|
|
完全背包问题
与01背包的区别:每件物品有无限个。
题目
有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。
第 i 种物品的体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。
输入格式
第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。
输出格式
输出一个整数,表示最大价值。
数据范围
0<N,V≤1000 0<vi,wi≤1000
输入样例
|
|
|
|
多重背包问题 (优化)
与01背包的区别:每个物品最多有Si个。
分组背包问题
问题 : 物品有N组,每组物品里面有若干个,每一组里面最多只能选出1个。
文章作者 墨初
上次更新 2022-09-05