原题
https://leetcode-cn.com/problems/combination-sum-iv/

思路
递归回溯,同时也利用了动态规划的思想
题解
package com.leetcode.code;
import java.util.HashMap;
import java.util.Map;
/**
* @Description:
* @ClassName: Code377
* @Author: ZK
* @Date: 2021/4/24 21:29
* @Version: 1.0
*/
public class Code377 {
public static void main(String[] args) {
}
// key : target
// val : total number of target
static Map<Integer, Integer> map = new HashMap<>();
public static int combinationSum4(int[] nums, int target) {
return backtrack(nums, target);
}
private static int backtrack(int[] nums, int target){
if (target == 0) {
return 1;
}
if (map.containsKey(target)) {
return map.get(target);
}
int res = 0;
for (int i = 0; i < nums.length; i++) {
if (target >= nums[i]) {
res += backtrack(nums, target - nums[i]);
}
}
map.put(target, res);
return res;
}
}
四数和组合:递归与动态规划解题策略

本文解析LeetCode题目377《组合总和IV》的解法,运用递归和动态规划技巧,通过回溯算法寻找目标和的不同组合。讲解了如何在Java中实现并利用哈希映射优化搜索过程。
989

被折叠的 条评论
为什么被折叠?



