这道题一开始用的DFS,后来超时了。看了大神写的动态规划发现挺简单的,但是自己就是没找到递归关系,后来看到大神的博客,才想起来确实和climing stairs那道题很像。
http://www.cnblogs.com/grandyang/p/5705750.html
代码:
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
vector<int> dp(target + 1);
dp[0] = 1;
for (int i = 1; i <= target; ++i) {
for (auto a : nums) {
if (i >= a) dp[i] += dp[i - a];
}
}
return dp.back();
}
};