首页 > 编程语言 >Python算法(进阶)

Python算法(进阶)

时间:2022-11-20 13:11:30浏览次数:39  
标签:背包 进阶 weight Python value bag 算法 num 物品

1. 01背包问题

有若干物品,每个物品有对应的重量weight和价值value,背包容纳重量为bag_weight,在背包允许的重量下,往背包内放物品,每个物品只能放一次,保证其价值最高

weight = [2,2,6,5,4]                      # 物品重量列表
value = [3,6,5,4,6]                        # 物品价值列表
bag_weight = 10                           # 背包容纳重量

def fullBag(weight, value, bag_weight):
    num = len(weight)            # 获取物品数量
    weight.insert(0,0)            # 不存在第0个物品,第0个总重量为0
    value.insert(0,0)                # 同上
    # 使用numpy快速建立数组,即六种情况,一个不取、只选择第一个,只选择前两个...全部进行选择等情况的数组
    bag = np.zeros((num + 1, bag_weight + 1), dtype=np.int32)
    # 循环取值,i和j分别对应行和列
    for i in range(1,num+1):
        for j in range(1,bag_weight+1):
            if weight[i] <= j:
                bag[i][j] = max(bag[i-1][j-weight[i]]+value[i],bag[i-1][j])
            else:
                bag[i][j] = bag[i-1][j]
    print(bag)
    return bag[-1,-1]

result = fullBag(weight,value,bag_weight)
print(result)

 

标签:背包,进阶,weight,Python,value,bag,算法,num,物品
From: https://www.cnblogs.com/chf333/p/16908274.html

相关文章

  • 神经网络算法实验
    【实验目的】理解神经网络原理,掌握神经网络前向推理和后向传播方法;掌握神经网络模型的编程实现方法。【实验内容】1.1981年生物学家格若根(W.Grogan)和维什(W.Wirth)发现......
  • 实验四:神经网络算法
             ......
  • 罗正雄:基于展开交替优化的盲超分算法DAN
    SFFAI90—超分辨率专题《罗正雄:基于展开交替优化的盲超分算法》退化表达式为:盲超分就是已知y,求x这个求解过程可以表示为如下最优化问题:求出使得以下表达式最小的k和x值盲......
  • 实验四:神经网络算法
    【实验目的】理解神经网络原理,掌握神经网络前向推理和后向传播方法;掌握神经网络模型的编程实现方法。【实验内容】1.1981年生物学家格若根(W.Grogan)和维什(W.Wirth)发现了......
  • 神经网络算法
    【题目】1.1981年生物学家格若根(W.Grogan)和维什(W.Wirth)发现了两类蚊子(或飞蠓midges),他们测量了这两类蚊子每个个体的翼长和触角长,数据如下:翼长触角长类别1.781.14Apf......
  • 实验四:神经网络算法实验
    importnumpyasnpdefsigmoid(x):return1/(1+np.exp(-x))#f(x)=1/(1+exp(-x))defderiv_sigmoid(x):fx=sigmoid(x)returnfx*(1-fx)#f'(x)=f(x)*(1-f(x))de......
  • 遗传算法 模板
    利用python中的geatpy库实现单目标和多目标优化importnumpyasnpimportgeatpyaseaclassMyProblem(ea.Problem):#继承Problem父类def__init__(self):......
  • python 发送 application/x-www-form-urlencoded 类型的数据包
    在网上百度了很多,坑的要死,基本不咋好用,自己多尝试了几遍,成功实现了。data的构建方式data=f"page={page}&sign={sign}&t={t}"直接这么弄就可以了,不用搞的那么麻烦。......
  • Python第八章实验报告
    一.实验对象:《零基础学Python》第八章的3道实例和4道实战二.实验环境:IDLEShell3.9.7三.实验要求:学习使用标准模块和第三方模块四.实验过程:实例01创建计算BMI指数的......
  • aws dynamodb python boto3 调用方法
    dynamodb=boto3.resource('dynamodb')是boto3的高级接口,更底层的有:importboto3dynamodb_client=boto3.client('dynamodb')res=dynamodb_client.list_tables()......