python - 我的背包代码输出错误?

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

我试图编写一个简单的 0-1 背包问题,但遇到了一些错误。帮助将不胜感激。

T = int(input().strip())
def knapsack(n,k,ar):
    if n==0 or k==0:
        return 0
    elif ar[n-1]>k:
        return knapsack(n-1,k,ar)
    else:
        return max(knapsack(n-1,k,ar),ar[n-1] + knapsack(n-1,k-ar[n-1],ar))
for t in range(T):
    a = input().strip()
    n,k = int(a[0]),int(a[2])
    ar = [int(i) for i in input().strip().split(' ')]
    print(knapsack(n,k,ar))

我再次运行这个输入

2
3 12
1 6 9
5 9
3 4 4 4 8

我收到错误的输出?我找不到任何错误。提前致谢

输出

1
8

最佳答案

您的算法没问题,但您对函数的输入是错误的。

在第一个输入中,n,k = int(a[0]),int(a[2]) 行采用 3 1 作为输入而不是 312
我猜你应该使用 list(map(int, input().split())) 来代替,并得到 a[0]a[1]

关于python - 我的背包代码输出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39808872/

相关文章:

python-3.x - Python 3.10 中 ffprobe 的困难

python - 如何编写 Django ORM 查询来搜索接近但不超过某个其他值的值?

java - Level Order tree 遍历通用树,逐层显示树

python - 日期滚动总和指数

python - 如何在 Python 中使用 bzip2 压缩文件?

python 子进程

regex - 反向应用的正则表达式会产生相同的匹配吗?

c - 在非常长的字符串中查找频率的最佳方法

python - 八进制字符串文字和八进制命令行参数

python - 在 python json.dumps 输出中禁用科学记数法