【動態規劃】揹包問題
演算法圖解案例
程式碼求解
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揹包問題動態規劃
- 動態規劃系列之六01揹包問題動態規劃
- 動態規劃解0-1揹包問題動態規劃
- 0-1揹包問題 動態規劃法動態規劃
- 動態規劃-揹包類動態規劃
- 01揹包問題理解動態規劃演算法動態規劃演算法
- 動態規劃-揹包01問題推理與實踐動態規劃
- 【動態規劃】一次搞定三種揹包問題動態規劃
- 動態規劃之 0-1 揹包問題詳解動態規劃
- 詳解動態規劃01揹包問題--JavaScript實現動態規劃JavaScript
- 詳解動態規劃01揹包問題–JavaScript實現動態規劃JavaScript
- 雙核處理(動態規劃的01揹包問題)動態規劃
- 【動態規劃】0-1揹包問題原理和實現動態規劃
- 動態規劃0-1揹包動態規劃
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃
- 動態規劃之01揹包問題(最易理解的講解)動態規劃
- 演算法-動態規劃-完全揹包演算法動態規劃
- 01揹包動態規劃空間優化動態規劃優化
- 多重揹包動態規劃及空間優化動態規劃優化
- 前端與演算法-動態規劃之01揹包問題淺析與實現前端演算法動態規劃
- 洛谷 1064——金明的預算方案(動態規劃的揹包問題)動態規劃
- 揹包問題演算法全解析:動態規劃和貪心演算法詳解演算法動態規劃
- 【演算法資料結構Java實現】Java實現動態規劃(揹包問題)演算法資料結構Java動態規劃
- 【LeetCode動態規劃#08】完全揹包問題實戰與分析(零錢兌換II)LeetCode動態規劃
- 揹包問題(01揹包與完全揹包)
- 【LeetCode動態規劃#06】分割等和子集(01揹包問題一維寫法實戰)LeetCode動態規劃
- 動態規劃之子序列問題動態規劃
- 整數劃分問題(動態規劃)動態規劃
- 前端學習演算法2: 揹包問題 ,一步一步思考(動態規劃入門)前端演算法動態規劃
- 揹包問題