01背包问题动态规划matlab
时间: 2023-10-10 12:08:27 浏览: 107
动态规划解决背包问题 MATLAB
5星 · 资源好评率100%
Sure! 以下是一个使用动态规划解决01背包问题的Matlab代码示例:
```matlab
function maxVal = knapsack01(weight, value, capacity)
n = length(weight);
% 创建一个(n+1) x (capacity+1)的二维数组用于存储子问题的最优解
dp = zeros(n+1, capacity+1);
% 遍历每个物品
for i = 1:n
% 遍历每个背包容量
for j = 1:capacity+1
% 如果当前物品的重量大于背包容量,则无法放入背包
if weight(i) > j
dp(i+1, j) = dp(i, j);
else
% 否则,考虑将当前物品放入背包或不放入背包的情况,选取最大值
dp(i+1, j) = max(dp(i, j), dp(i, j-weight(i)) + value(i));
end
end
end
% 返回背包能容纳的最大价值
maxVal = dp(n+1, capacity+1);
end
```
使用示例:
```matlab
weight = [2, 3, 4, 5];
value = [3, 4, 5, 6];
capacity = 8;
maxVal = knapsack01(weight, value, capacity);
disp(maxVal);
```
希望对你有帮助!如有其他问题,请随时提问。
阅读全文