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)
B = fractional_Knapsack(n-(i+1), size[i+1:], profit[i+1:], T)
您的方法被称为
def frac_knapsack(n,size, profit,K):
你能缩小你的问题范围并公布完整的回溯吗?