LintCode:背包问题

来源:互联网 发布:lte中d2怎么优化 编辑:程序博客网 时间:2024/04/30 16:26

LintCode:背包问题

首先想到的是建个二维数组,动态规划,超时了。。。

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]
0 0