蟒蛇背囊

问题描述 投票:1回答:1

这是我目前的代码。

   def frac_knapsack(n,size, profit,K):
    if K <= 0:
       return 0
    for i in range(0,i):
        if profit[i]/size[i]>profit[i-1]/size[i-1]:
            profit.append[i] and size.append[i]
    s = 0
    p = 0
    for i in range(n):
        if s + size[i] <= K:
            p += profit[i]
            s += size[i]
        else: 
            p += (K-s) * (profit[i]/size[i])
            s = K
            break
        return p
def Knapsack(i, size):
    if i > n or size <= 0:
        print(x)
        return
    if x[j] == 1:
        for j in range(0,i-1):
           p+=P[j]
    if x[j] == 1:
        for j in range(0,i-1):
           s+=S[j]
    if x[i] == 1:
        if s+size[i] <= K and (p + profit[i] + B) > MaxProfit:
            B = fractional_Knapsack(n-(i+1), size[i+1:], profit[i+1:], T-size[i])
        if p+profit[i] > MaxProfit:
            MaxProfit=p+profit[i]
            x=solution
        Knapsack(i+1, T-size[i])
        if x[i] == 0:
            B = frac_Knapsack(n-(i+1), size[i+1:], profit[i+1:], T)
        if (p + B) > MaxProfit:
            Knapsack(i+1, T)
  1. 我在第4行有一个排序的问题。我必须按权重效率排序,我需要使用快速排序算法吗?
  2. 我想输入四样东西:n,size,profit和Kdo,我需要用map吗,因为size和profit是列表?
python backtracking knapsack-problem
1个回答
1
投票

您使用了

B = fractional_Knapsack(n-(i+1), size[i+1:], profit[i+1:], T)

你的方法被称为

def frac_knapsack(n,size, profit,K):
© www.soinside.com 2019 - 2024. All rights reserved.