我的背包代码输错了吗?

时间:2016-10-01 16:21:39

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

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

string ss = "[" + Regex.Escape("[") + Regex.Escape("^") + "]"

我再次运行了

的输入
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 个答案:

答案 0 :(得分:2)

您的算法很好,但您对该功能的输入是错误的。

在第一个输入中,行n,k = int(a[0]),int(a[2])31作为输入,而不是312。 我想您应该使用list(map(int, input().split())),然后获取a[0]a[1]