class Solution { //题目限制很少,可以重复且排列不同也算,那么每一层递归时,数组全部需要检测, public: int ans = 0; int combination(vector<int>& nums, int target) { dp(nums, target, 0); return ans; } void dp(vector<int>& nums, int target, int curr){ if(curr > target)return; if(curr == target){ ++ans; return; } for(int i=0; i<nums.size(); ++i){ dp(nums, target, curr+nums[i]); } } };