python回溯背包

python回溯背包,python,backtracking,knapsack-problem,Python,Backtracking,Knapsack Problem,这是我迄今为止的代码: 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 ran

这是我迄今为止的代码:

   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)
def压裂背包(n、尺寸、利润、K): 如果K利润[i-1]/规模[i-1]: 利润.追加[i]和规模.追加[i] s=0 p=0 对于范围(n)中的i: 如果s+size[i]n或size MaxProfit: 最大利润=p+利润[i] x=溶液 背包(i+1,T型[i]) 如果x[i]==0: B=压裂背包(n-(i+1),尺寸[i+1:],利润[i+1:],T) 如果(p+B)>最大利润: 背包(i+1,T)
  • 我对第4行的排序有问题。我必须把它归类为重量效率。我需要使用快速排序算法吗
  • 我想为四件事提供意见: n、 规模、利润和利润 我需要使用地图吗?规模和利润是多少
  • 你曾经

    B = fractional_Knapsack(n-(i+1), size[i+1:], profit[i+1:], T)
    
    您的方法被称为

    def frac_knapsack(n,size, profit,K):
    

    你能缩小你的问题范围并公布完整的回溯吗?