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
    
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章