DP之 0-1 揹包問題

0-1 揹包問題

import numpy as np
def knapsack(w, v, C): # 重量 和 價值 一一對應的數組, 揹包的容量
    
    # 定義存儲空間 並 初始化
    mem = np.zeros((len(w) + 1, C + 1))
    
    for i in range(1, len(w) + 1):
        for j in range(1, C + 1):
            
            # 拿當前第 i 個物品(i 是從1編序號開始的。。。w 、v 數組 和 mem數組不對應!)
            if w[i - 1] <= j:
                mem[i][j] = max(mem[i, j], mem[i - 1, j], mem[i - 1, j - w[i - 1]] + v[i - 1])
            
            # 不拿第 i 件物品!!!
            else:
                mem[i, j] = mem[i - 1, j]
                
    return mem
    
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章