动态规划
someone_and_anyone
未知
展开
-
01背包问题
有N件物品和容积为V的背包,每件物品有着各自的价格和体积,求将那些物品装入背包可是价值总和最大每件物品只有一件,因此,我们可以将物品一个个放入“背包”中来看看当前的最优解是什么。我们可以开一个数组来代替背包,将物品放入能容纳它的位置,不断的对比和更新当前的最大价值。由于每件物品只有一个,因此我们可以从倒着更新数组。#include<iostream> #include<cstdi...原创 2018-07-16 15:54:10 · 190 阅读 · 0 评论 -
完全背包问题
同样的,我们一个一定体积的背包与大量的物品,每个物品有着各自的体积和价值,每个物品有无数个,求价值最大的解法我们可以开一个数组来代替背包,然后当前物品不断放入,同时更新最大价值。在这里我们可以从第一个能放入当前物品的地方向后更新,每次将当前价值和放入当前物品后的价值进行对比。#include<iostream> #include<cstdio> #include<cs...原创 2018-07-16 16:04:38 · 387 阅读 · 0 评论 -
多重背包问题
还是同样的,我们有一个体积为V的背包和多个有着各自体积和价格的物品,不过这次每个物品的数量是有限个,还是要求求取最优解 在多重背包问题中,我们可以把它转化成01背包问题,只是有着多个物品相同。我们可以加一层for循环来完成对物品数量的控制 #include<iostream> #include<cstdio> #include<cstring> u...原创 2018-07-17 18:21:09 · 407 阅读 · 0 评论 -
LIS(最长上升子序列)
在一段序列中,我们需要求取原创 2018-07-13 17:08:44 · 288 阅读 · 0 评论