# coding: utf-8 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 ''' 卿è§åï¼å·²m = 10ï¼A = [3, 4, 8, 5]为ä¾ï¼ 1. A[0] = 3, c[10] ... C[3] = 3 2. A[1] = 4 - c[10] = max(c[10 - 4] + 4, c[10]) = max(c[6] + 4, c[10]) = 7 - c[7] = c[8] = c[9] = 7 - c[6] = max(c[6 - 4] + 4, c[6]) = 4 - c[4] = c[5] = 4 c[i]表示大å°ä¸ºiç空é´çæå¤§å®¹éï¼å¯¹äºå¤§å°ä¸ºkçç©åï¼ç¶æè½¬ç§»æ¹ç¨ä¸ºï¼c[i] = max(c[i - k] + k, c[i]) ''' capacities = [0] * (m + 1) if A: for i in xrange(len(A)): for j in xrange(m, A[i] - 1, -1): capacities[j] = max(capacities[j - A[i]] + A[i], capacities[j]) return capacities[-1] # medium: http://lintcode.com/zh-cn/problem/backpack/