0
点赞
收藏
分享

微信扫一扫

01背包算法图解

IT程序员 2022-03-10 阅读 85
算法

假设你是一个小偷,背着一个可装下 4 磅东西的背包,你可以偷窃的物品如下:

为了让偷窃的商品价值最高,你该选择哪些商品?

简单算法

最简单的算法是:尝试各种可能的商品组合,并找出价值最高的组合。

这样显然是可行的,但是速度非常慢。在只有 3 件商品的情况下,你需要计算 8 个不同的集合;当有 4 件商品的时候,你需要计算 16 个不同的集合。每增加一件商品,需要计算的集合数都将翻倍!这种算法的运行时间是 O(2ⁿ),真的是慢如蜗牛。

动态规划

解决这样问题的答案就是使用动态规划!下面来看看动态规划的工作原理。动态规划先解决子问题,再逐步解决大问题。

对于背包问题,你先解决小背包(子背包)问题,再逐步解决原来的问题。

比较有趣的一句话是:每个动态规划都从一个网格开始。

背包问题的网格如下:

举报

相关推荐

0 条评论