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==