
动态规划
文章平均质量分 82
DP
Victayria
给时光以生命
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数塔
先附上题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2084 首先是状态表示,用 f [ i ] [ j ] 来表示从顶层走到 (i, j) 元的所有路径中数字之和的最大值。 然后考虑状态计算: 每一个状态都可以划分为从左上方和从右上方来,于是思路已经逐渐清晰了,代码如下: #include <iostream> #incl...原创 2020-01-20 17:09:08 · 232 阅读 · 0 评论 -
01背包问题
已知一个体积为m的背包,和n件物体,每件物体有其固定的体积和权重,要求从种选择物品,在总体积不超过m的前提下有最大的总权值。 最原始的代码如下: #include <iostream> #include <algorithm> #define N 1010 //提给条件下n和m的取值范围不大于1000 using namespace std; int n, m; i...原创 2020-01-20 15:15:02 · 233 阅读 · 0 评论 -
分组背包问题
分组背包问题:已知一个体积为m的背包,共有n种物品,每一种物品有s个,每个的体积v和权值w不一定相同,要求从每一种物品中选某件物品,使得在总体积不超过m的情况下,所选的总权值最大。 代码如下(已优化成一维滚动数组) #include <iostream> #include <algorithm> #define N 110 using namespace std; ...原创 2020-01-20 13:36:58 · 352 阅读 · 0 评论 -
多重背包问题
还是一个体积为m的背包,共有n种物品,其中每种物品有固定的体积,权重和数量 v[i], w[i], s[i], 要求从这i种物品中做出选择,使得在总体积不超过m的条件下,装下的物品有最大的权值。 首先,一种暴力方法就是枚举选择0~s个第i件物品的所有方法,代码如下 #include <iostream> using namespace std; const int N = 1...原创 2020-01-20 12:51:21 · 298 阅读 · 1 评论 -
完全背包问题
完全背包问题就是指已知一个体积为m的背包,共有n种物品,其中每种物品有其特定的体积v[i], 和权重w[i],每种物品有无限个,要求从中选取物品装进背包,使总权值最大。 首先是总体需要弄清楚的模板发: 状态计算如下:(按照选择第 i 件物品的数量来划分) f [i, j] = max( f [ i - 1, j ], f [ i , j - v ] + w, f [ i, j - 2 ...原创 2020-01-19 23:08:23 · 739 阅读 · 2 评论