【问题标题】:my knapsack code does not work in python 3 can anyone help what is the problem with my code?我的背包代码在 python 3 中不起作用任何人都可以帮助我的代码有什么问题吗?
【发布时间】:2022-12-31 15:27:23
【问题描述】:
def knapSack(W, wi, pi, i):
    
    if i == 0 or W == 0:
        return 0

    if (wi[i-1] > W):
        return knapSack(W, wi, pi, i-1)

    else:
        return max(
            pi[n-1] + knapSack(
                W-wi[n-1], wi, pi, n-1),
            knapSack(W, wi, pi, n-1))

pi = [25, 5, 20, 120, 100, 0, 30, 0, 0, 75, 100]
wi = [2, 4, 1, 8, 10, 5, 3, 7, 6, 12, 7]
W = 30
n = len(pi)
knapSack(W, wi, pi, n)

我期待最后的功能答案,但我不断收到错误。 我收到(超出最大递归深度)错误,但我认为这不是问题所在。

【问题讨论】:

  • 请阅读How to Ask并描述您的问题显示代码。

标签: python python-3.x knapsack-problem


【解决方案1】:

knappSack() 函数的参数为​​i,但在函数中您仍在使用n,这在递归中将保持不变。更改为

def knapSack(W, wi, pi, i):
    
    if i == 0 or W == 0:
        return 0

    if (wi[i-1] > W):
        return knapSack(W, wi, pi, i-1)

    else:
        return max(
            pi[i-1] + knapSack(W-wi[i-1], wi, pi, i-1),
            knapSack(W, wi, pi, i-1))

pi = [25, 5, 20, 120, 100, 0, 30, 0, 0, 75, 100]
wi = [2, 4, 1, 8, 10, 5, 3, 7, 6, 12, 7]
W = 30
n = len(pi)
knapSack(W, wi, pi, n)

应该解决问题。

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2021-10-18
    • 2023-01-15
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多