这道题本来是用了递归的方式,可是提交后发现超时了,只好采用DP来做(下面注销的代码是递归方式):
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var combinationSum4 = function(nums, target) {
nums.sort(function(a,b){
return a-b;
});
var len = nums.length;
var ret = [];
for(var i=1;i<target+1;i++){
ret[i] = 0;
for(var j=0;j<len;j++){
var num = nums[j];
if(num > i){
break;
}else if(num == i){
ret[i] += 1;
}else{
ret[i] += ret[i-num];
}
}
}
return ret[target];
// var ret = 0;
// var min = nums[0];
// find(target);
// return ret;
// function find(thenum){
// if(thenum === 0 ){
// ret++;
// return;
// }
// if(thenum < min){
// return;
// }
// nums.forEach(function(item){
// find(thenum - item);
// });
// }
};