野牛程序员讲少儿编程之——多重背包问题(C++版)
9周年啦!感谢这座城市的每一份信任!
宜宾市野牛网络科技有限公司走过了整整九个年头,感谢一路陪伴的客户、朋友、合作伙伴,是这份信任让我们不断进步、不断成长!
未来会更好,服务会更稳,技术会更强——
一起奔向下一个精彩的九年!
🧐 什么是多重背包?
前面学的:
0-1背包:每种物品只能拿一次。
完全背包:每种物品可以拿无限次。
那多重背包呢?
就是每种物品可以拿有限次数!
比如,小熊饼干店限购,每人最多买5包,不能全搬走哦!
一句话总结:
每种物品的数量是有限制的!
看C++代码(附超详细注释)
🧠 小朋友版讲解
背包容量:4kg!
规则:每种宝贝有限制!
怎么选最赚?
2包小熊饼干(1kg+1kg)= 2kg,价值300元!
1个游戏手柄(3kg)= 3kg,价值200元!
1个智能音响(4kg)= 4kg,价值300元!
那最聪明的玩法是?
直接装1个智能音响,装满4kg,赚300元!
所以程序输出是:
多重背包的难点在哪里?
小朋友要记得:
不是能拿就一直拿!每种宝贝有数量上限。
所以要多层循环:每种物品 每件物品 每个背包容量。
避免重复计算,容量要从大到小倒着遍历。
小总结(很重要!)
小诀窍:
有次数限制的,就是多重背包!
小剧场
如果小熊饼干无限量供应,那是完全背包;
如果每人限购2包,那就是多重背包;
如果只能买1次机会,那就是0-1背包!
是不是超级形象!
野牛程序员教少儿编程与信息学奥赛
宜宾市野牛网络科技有限公司专业微信小程序开发、网站建设、软件开发等