【動態規劃】揹包問題
演算法圖解案例
程式碼求解
import numpy as np
commodities = np.array([[1500, 3000, 2000], [1, 4, 3]]) # 商品列表,第一行表示商品的價格,第二行表示商品的重量
arr = np.zeros((commodities.shape[1], 4), dtype=int) # 動態規劃表格
max_val = 0 # 能夠偷取的商品的最大價值
# 先填充表格的第一行(即偷取第一個商品)
for j in range(0, arr.shape[1]):
arr[0][j] = commodities[0][0] if commodities[1][0] <= j + 1 else 0
# 依次偷取剩餘商品然後比較價格
for i in range(1, arr.shape[0]):
for j in range(0, arr.shape[1]):
if commodities[1][i] <= j + 1:
left_space = j + 1 - commodities[1][i]
before_val = arr[i - 1][j]
current_val = commodities[0][i] if left_space == 0 else commodities[0][i] + arr[i - 1][left_space - 1]
arr[i][j] = current_val if current_val > before_val else before_val
else:
arr[i][j] = arr[i - 1][j]
max_val = arr.flatten()[-1] # 表格最後一個值為最後能夠偷取的最大價值
print(arr)
print(max_val)
及時獲取我發的文章,學習更多程式設計知識歡迎關注我的個人微信公眾號:
相關文章
- 揹包問題----動態規劃動態規劃
- 動態規劃 01揹包問題動態規劃
- 【動態規劃】01揹包問題動態規劃
- 動態規劃--01揹包問題動態規劃
- 動態規劃篇——揹包問題動態規劃
- 動態規劃-01揹包問題動態規劃
- 【動態規劃】01揹包問題【續】動態規劃
- 0-1揹包問題(動態規劃)動態規劃
- 動態規劃之0,1揹包問題動態規劃
- 動態規劃解0-1揹包問題動態規劃
- 動態規劃系列之六01揹包問題動態規劃
- 動態規劃-揹包01問題推理與實踐動態規劃
- 01揹包問題理解動態規劃演算法動態規劃演算法
- 詳解動態規劃01揹包問題--JavaScript實現動態規劃JavaScript
- 詳解動態規劃01揹包問題–JavaScript實現動態規劃JavaScript
- 動態規劃之 0-1 揹包問題詳解動態規劃
- 【動態規劃】一次搞定三種揹包問題動態規劃
- 【動態規劃】0-1揹包問題原理和實現動態規劃
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃
- 演算法-動態規劃-完全揹包演算法動態規劃
- 01揹包動態規劃空間優化動態規劃優化
- 多重揹包動態規劃及空間優化動態規劃優化
- 前端與演算法-動態規劃之01揹包問題淺析與實現前端演算法動態規劃
- 【LeetCode動態規劃#08】完全揹包問題實戰與分析(零錢兌換II)LeetCode動態規劃
- 揹包問題演算法全解析:動態規劃和貪心演算法詳解演算法動態規劃
- 【LeetCode動態規劃#06】分割等和子集(01揹包問題一維寫法實戰)LeetCode動態規劃
- 【LeetCode動態規劃#10】完全揹包問題實戰,其三(單詞拆分,涉及集合處理字串)LeetCode動態規劃字串
- 揹包問題(01揹包與完全揹包)
- 動態規劃之子序列問題動態規劃
- 前端學習演算法2: 揹包問題 ,一步一步思考(動態規劃入門)前端演算法動態規劃
- 揹包問題
- 找零問題與動態規劃動態規劃
- 醜數問題——動態規劃、Java動態規劃Java
- 動態規劃之股票問題123動態規劃
- 動態規劃,股票問題留坑動態規劃
- 【LeetCode動態規劃#07】01揹包問題一維寫法(狀態壓縮)實戰,其二(目標和、零一和)LeetCode動態規劃
- 01揹包問題
- 01 揹包問題