Combination Sum (Python)
kitt
posted @ 2014年2月10日 02:04
in LeetCode
, 2917 阅读
动态规划,依次求出target=1, 2, 3 ... N时的solution set, 后面的结果依赖于前面的结果。
class Solution: # @param {integer[]} candidates # @param {integer} target # @return {integer[][]} def combinationSum(self, candidates, target): dp = [[] for i in xrange(target + 1)] dp[0].append([]) # dp[0] must have content, an empty list, i.e. dp[0] = [[]] for i in xrange(1, target + 1): for number in candidates: if i >= number: for L in dp[i - number]: tmp = sorted(L + [number]) if tmp not in dp[i]: dp[i].append(tmp) return dp[target]
2014年4月30日 07:20
第11行貌似可以不用dp[i-num]吧?
2015年6月03日 02:21
对的,已改,thx~ @Nicholas326: