首先想到的是建个二维数组,动态规划,超时了。。。
class Solution:
# @param m: An integer m denotes the size of a backpack
# @param A: Given n items with size A[i]
# @return: The maximum size
def backPack(self, m, A):
# write your code here
n = len(A)
A.insert(0, 0)
ans = [[0 for i in range(m+1)] for i in range(n+1)]
for i in range(1, n+1):
for j in range(1, m+1):
if j-A[i-1] >= 0 and j >= ans[i-1][j-A[i-1]] + A[i] and j >= A[i]:
ans[i][j] = max(ans[i-1][j-A[i-1]] + A[i], ans[i-1][j], A[i])
elif j >= ans[i-1][j] and j >= A[i]:
ans[i][j] = max(ans[i-1][j], A[i])
else:
ans[i][j] = ans[i-1][j]
return ans[n][m]