算法题/背包问题

这篇博客探讨了如何使用Python解决0-1背包问题。问题定义为:给定一个背包容量和n件物品的重量,判断是否能选择若干物品,使得它们的总重量等于背包的容量。博主通过递归算法清晰地阐述了解决思路,并提供了数学描述。
摘要由CSDN通过智能技术生成

python

设有一个背包可以放入的物品重量为weight,现有n件物品,重量分别是w1,w2,w3,…wn。 问能否从这n件物品中选择若干件放入背包中,使得放入的重量之和正好为weight。 如果有满足条件的选择,则此背包有解,否则此背包问题无解。

0- 1 背包问题如果采用递归算法来描述则非常清楚明白, 它的算法根本思想是假设用布尔函数package( weight,items n) 表示n 件物品放入可容质量为weight 的背包中是否有解,items表示物体重量。

数学描述:
package(weight,item,n) =1 (weight=0)
=0 (weight<0,n<0,n>len(items))
=1 (情况一,package(weight-item[n],item,n-1)存在)
=1 (情况二,package(weight,item,n-1))

#coding:utf-8
"""
递归问题:解题思路找到对应的数学表达式
"""
def package(weight,items,n):
        if weight==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值