思路
动态规划
解题过程
假设dfs(target)表示组成target的组合数,可得转换方程dfs(target)=dfs(target-nums[0])+dfs(target-nums[1])…以此类推
注意:nums[i]需要小于等于当前的target
Code
class Solution {public int combinationSum4(int[] nums, int target) {int memo[] = new int[target + 1];Arrays.fill(memo, -1);return dfs(memo, nums, target);}public int dfs(int memo[], int nums[], int target) {if (target == 0)return 1;if (memo[target] != -1)return memo[target];int ans = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] <= target)ans += dfs(memo, nums, target - nums[i]);}memo[target] = ans;return ans;}
}作者:菜卷
链接:https://leetcode.cn/problems/combination-sum-iv/solutions/3037863/zu-he-zong-he-ivchao-yue-100-by-ashi-jia-ywg8/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。