问题描述
"""
部分背包问题:
输入:n个物品组成的集合O,每个物品有两个属性Vi和Pi,分别表示体积和价格
背包容量为C
输出:求解一个解决方案S={Xi|1<=i<=n,0<=Xi<=1},使得:
优化目标为max(Xi·Pi的总和)
约束条件为(Xi·Vi的总和)小于等于C
"""
代码
def FranctionalKnapsack(n, p, v, C):
"""
:param n: 商品数量n
:param p: 各商品的价值p
:param v: 各商品的体积v
:param C: 背包容量C
:return: 商品价格的最大值,最优方案
计算商品性价比Ratio[1...n]并按降序排序
"""