欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DP之 0-1 背包问题

程序员文章站 2022-07-12 09:14:36
...

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
    
    
相关标签: NLP 动态规划