0-1背包算法和完全背包算法MATLAB代码实现
2022/1/10 20:07:02
本文主要是介绍0-1背包算法和完全背包算法MATLAB代码实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
有10件物品,它们的重量分别是5,8,3,2,6,6,5,4,7,5,,它们的价值分别是2,4,7,7,3,6,3,5,4,6,现在给你个承重为30的背包,试用0-1背包、完全背包算法,分别计算如何让背包里装入的物品具有最大的价值总和?
0-1背包算法
clear all clc close all v=[2,4,7,7,3,6,3,5,4,6];%物品价值 w=[5,8,3,2,6,6,5,4,7,5];%物品重量 m=zeros(10,31);%建立二维数组 for j=0:30 if j>=w(1) m(1,j+1)=v(1); end end%初始化第一行,数组编码从1开始,因此下标要加1 for i=2:10 for j=1:30 if j>=w(i)%背包可以装下当前物体 m(i,j+1)=max(m(i-1,j+1),m(i-1,j-w(i)+1)+v(i));%1.不装 2.空出刚好可以放进去的容量 else m(i,j+1)=m(i-1,j+1);%容量不够不能装 end end end disp(m(10,31))
矩阵最后一个元素即为价值最大值
完全背包算法
clear all clc close all v=[2,4,7,7,3,6,3,5,4,6];%物品价值 w=[5,8,3,2,6,6,5,4,7,5];%物品重量 m=zeros(10,31);%建立二维数组 for j=1:31 m(1,j)=floor(j/w(1))*v(1); end %初始化第一行,数组编码从1开始,因此下标要加1 for i=2:10 for j=1:30 for k=1:floor(j/w(i))%最多可以取k个背包 m(i,j+1)=max(m(i,j+1),m(i-1,j-k*w(i)+1)+k*v(i));%1、不取,2、取k个i背包 end end end disp(m(10,31))
这篇关于0-1背包算法和完全背包算法MATLAB代码实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-082024年常用的情绪识别API
- 2025-01-07如何利用看板工具优化品牌内容创作与审批,确保按时发布?
- 2025-01-07百万架构师第十一课:源码分析:Spring 源码分析:Spring源码分析前篇|JavaGuide
- 2025-01-07质量检测标准严苛,这 6 款办公软件达标了吗?
- 2025-01-07提升品牌活动管理的效率:看板工具助力品牌活动日历的可视化管理
- 2025-01-07宠物商场的精准营销秘籍:揭秘看板软件的力量
- 2025-01-07“30了,资深骑手” | 程序员能有什么好出路?
- 2025-01-07宠物公园的营销秘籍:看板软件如何帮你精准触达目标客户?
- 2025-01-07从任务分解到资源优化:甘特图工具全解析
- 2025-01-07企业升级必备指南:从传统办公软件到SaaS工具的转型攻略