我的 dp 编程代码在给定价格限制的情况下找到最大利润有什么问题?背包的变化?
What is wrong with my dp programming code to find max profit given price limit?Variation of knapsack?
嗨,我是 Python 的新手,我有这个列表:
product_list=[[0, 'Cool Blue Marella Jug', 33, 15], [1, 'Weight Loss Pack', 55, 16], [2, 'Weight Loss Pack', 10, 16]]
第一个数字基本上是指数,第二个数字 (33,55,10) 是价格,第三个数字 (15,16,16) 是利润。假设价格限制为 15,我的代码应该打印最大利润,在这种情况下显然是 16。但它打印的是 32?
这是我的代码:
def dp_pricelimit(product_list, price_limit):
memo=[0]*(price_limit +1)
memo[0]=0
for price in range(1, price_limit +1):
for item in product_list:#go through the items
if item[2]<=price_limit:
balance=price_limit-item[2]
profit=item[3] + memo[balance]
if profit>memo[price]:#if found new optimal
memo[price]=profit
return memo[price_limit]
如有任何帮助,我们将不胜感激。谢谢!
好的,对不起,我刚刚意识到它应该是价格而不是 price_limit。为了
if 语句
if item[2]<=price_limit
我的bad.And后面那一行应该也是价格。
嗨,我是 Python 的新手,我有这个列表:
product_list=[[0, 'Cool Blue Marella Jug', 33, 15], [1, 'Weight Loss Pack', 55, 16], [2, 'Weight Loss Pack', 10, 16]]
第一个数字基本上是指数,第二个数字 (33,55,10) 是价格,第三个数字 (15,16,16) 是利润。假设价格限制为 15,我的代码应该打印最大利润,在这种情况下显然是 16。但它打印的是 32?
这是我的代码:
def dp_pricelimit(product_list, price_limit):
memo=[0]*(price_limit +1)
memo[0]=0
for price in range(1, price_limit +1):
for item in product_list:#go through the items
if item[2]<=price_limit:
balance=price_limit-item[2]
profit=item[3] + memo[balance]
if profit>memo[price]:#if found new optimal
memo[price]=profit
return memo[price_limit]
如有任何帮助,我们将不胜感激。谢谢!
好的,对不起,我刚刚意识到它应该是价格而不是 price_limit。为了 if 语句
if item[2]<=price_limit
我的bad.And后面那一行应该也是价格。