python - 蟒蛇回溯背包
问题描述
这是我到目前为止的代码:
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)
- 我在第 4 行排序时遇到问题。我必须将其排序为重量效率。我需要使用快速排序算法吗?
- 我想输入四件事:n、大小、利润和 K 我需要使用地图吗?规模和利润是清单吗?
解决方案
你用过
B = fractional_Knapsack(n-(i+1), size[i+1:], profit[i+1:], T)
你的方法被称为
def frac_knapsack(n,size, profit,K):
推荐阅读
- php - 无法使用 Lumen 框架连接到 mysql 表
- python - 如何使用分页在 django 中获得有限的每页结果?
- firebase - Flutter getCurrentUser中的Firebase永远不会打开Future,我无法获取数据
- php - 按键顺序对多维数组进行排序
- java - RETROFIT 中的 PUT 和 DELETE
- gcc - gfortran:错误:libgfortran.spec:没有这样的文件或目录
- angular - 尽管所有代码看起来都不错,但 ngModel 绑定和 ngForm 导入问题。面对更多更奇怪的问题,任何 Angular 版本问题?
- java - 文本文件的最后一行未正确存储到二维数组中
- laravel - 为什么发送邮递员 GET 请求比在浏览器中访问同一端点要慢?
- javascript - 更改页面 javascript 代码 (TamperMonkey) 以将键盘敲击发送到父 DOM