动态规划-AcWing
背包问题:容量为V的背包,N个物品(每个问题体积vi,权重wi),在背包能装得下的前提下,问总权值最大为多少?
![](https://i-blog.csdnimg.cn/blog_migrate/35240e6c4af17976ae66818c481248cb.png)
动态规划思考过程:
![](https://i-blog.csdnimg.cn/blog_migrate/99319d640e84a802a7ebad0c30c129d1.png)
01背包代码:原题链接:01背包问题
初始版:
![](https://i-blog.csdnimg.cn/blog_migrate/2fa5ec1e068673e8b736a03ca5244be9.png)
优化版:
![](https://i-blog.csdnimg.cn/blog_migrate/576faa2a25dc3271931638b5e6f376a3.png)
完全背包:原题链接:完全背包问题
![](https://i-blog.csdnimg.cn/blog_migrate/56a4be43a649128226bd37349ea2f74b.png)
初始版代码(复杂度较高):
![](https://i-blog.csdnimg.cn/blog_migrate/cdb544f95e6aefe2a3523be3bcae733f.png)
优化版代码:
![](https://i-blog.csdnimg.cn/blog_migrate/eca3822b79953c5cceb6023f125a260a.png)
优化为2维:
![](https://i-blog.csdnimg.cn/blog_migrate/ca97a3785ab2924ec9c6e0e8f79cae6b.png)
优化为1维:
![](https://i-blog.csdnimg.cn/blog_migrate/51a70e9a41738ec08a15f012e5a4bf68.png)
多重背包:原题链接:多重背包问题
![](https://i-blog.csdnimg.cn/blog_migrate/abfde1859302f5301e77382bc88fb5be.png)
初始版:
![](https://i-blog.csdnimg.cn/blog_migrate/ca77b6624e38ec092170b9a7dc6f50a3.png)
优化版:
![](https://i-blog.csdnimg.cn/blog_migrate/a6eec2aa6562817dce355402498f154f.png)
由上得知,无法使用完全背包的方法优化多重背包,使用二进制优化方法。
将s种选法分组为logs个的新组合,然后使用01背包问题的代码:
![](https://i-blog.csdnimg.cn/blog_migrate/9595b96cffb5c380c6cd7fcffb4644ce.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7d8f86b0df4b60b7d1a5142b52b76cfe.png)
分组背包:分组背包问题
![](https://i-blog.csdnimg.cn/blog_migrate/b78a0ec6f63dfb7738e44bfb7df738a4.png)
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/ed3de923f03827ed760f14aa78da81cc.png)