Backpack 4

https://www.lintcode.com/problem/backpack-v/solution

这题我用的二维数组,memory limit exceeds,但应该是对的方法:

class Solution:
    """
    @param nums: an integer array and all positive numbers
    @param target: An integer
    @return: An integer
    """
    def backPackV(self, nums, target):
        # write your code here
        n = len(nums)
        dp= [[0]* (target+1) for _ in range(n+1)]
        for i in range(n+1):
            dp[i][0] = 1
        for i in range(1,n+1):
            for j in range(target+1):
                dp[i][j] = dp[i-1][j]
                if j >= nums[i-1]:
                    dp[i][j] += dp[i-1][j-nums[i-1]]
                #print("{} : {} -- {}".format(i,j,dp[i][j]))
        return dp[n][target]

试着优化一下成一位数组:

Last updated

Was this helpful?