关于#背包#
背包问题是我们集训第三天(最后一天)上午所学习的算法。由于我们是初学者的原因,贴心的学长给我们把背包九讲简化到了背包三讲,分别是01背包、完全背包、多重背包。
而对于背包问题,我们可以把它们比为背包装东西的问题,只不过因条件、数据而导致我们所需要的背包款式不同。因此我认为对于背包问题,关键也就是最难点就是背包的选取。就拿01背包、完全背包、多重背包(多重背包是两个背包都包含,故为多重????)来讲。
首先01背包:
有N件物品和一个容量为V的背包。每种物品均只有一件。
其次完全背包:
有N种物品和一个容量为V的背包,每种物品都有无限件可用。
再者多重背包:
有N种物品和一个容量为V的背包。第i种物品最多有m[i]件(你需要判断这些件数是适合01背包还是完全背包)可用。
这些就是用不同背包的条件,我们需要在得到问题后,准确的根据这些条件去判断问题到底适合用那种背包解决,因为用错就意味着GAME OVER(无条件gg)。
话不多说,背包关键已点,那么核心代码奉上喽????:
01背包
要说的一点就是01背包和完全背包唯一的差别就是01背包的for循环是逆序(i<=背包容量;i>=物品重量),而完全背包则是正序。
完全背包
多重背包
欧克,当这三个背包掌握后,你就背包小成了????。