leetcode hot100组合综合四

本题中,是要求nums中求的总和为target的排列数,因为题中说了,元素顺序不同,则可以视为不同的结果之一。

所以,根据对背包问题的总结,本题中元素可以重复使用,是完全背包并且需要求排列数,则我们需要考虑遍历顺序,先遍历背包(target),再遍历物品(nums)。并且在遍历背包的时候,我们应该采用正序遍历,因为是可以重复使用元素的。

递推公式:dpj += dpj-nums\[i]。并且我们在初始化的时候,dp0应该为1,否则得出的结果就都是0了。

注意:这里背包也从0开始遍历,但是在最后写递推公式的时候,需要满足i>=numsj,这样才能保证dpi-nums\[j]索引正常。

复制代码
class Solution {
    public int combinationSum4(int[] nums, int target) {
        int n = nums.length;
        int[] dp = new int[target+1];
        dp[0] = 1;
        for(int i = 0;i<=target;i++){
            for(int j = 0;j<n;j++){
                if(i>=nums[j]){
                dp[i] += dp[i-nums[j]];
            }
            }
        }
        return dp[target];
    }
}
相关推荐
明志数科1 小时前
具身智能真机采集工程实践:5类高频失效模式与规避清单
人工智能·算法·机器学习
CSDN_RTKLIB1 小时前
空间哈希与拓扑缓存
算法
大熊背2 小时前
IspPipeline色相旋转模块实现
人工智能·算法·计算机视觉
爱学习的小白柏2 小时前
同城双活的核心不是双活,是逼着数据别出机房
大数据·人工智能·算法·langchain·ai编程
鹿角片ljp3 小时前
LeetCode 31:下一个排列|右找小,右找大,交换,右反转
java·数据结构·算法
彧azz3 小时前
B树原理与C语言实现
c语言·数据结构·b树
蓝速科技3 小时前
酒店门店 AI 数字人前台场景适配与落地指南
大数据·运维·数据结构·数据库·人工智能·科技
橘子汽水1684 小时前
Leetcode 198,118打家劫舍,杨辉三角
算法·leetcode
LuminousCPP4 小时前
数据结构-排序(三):快速排序进阶|挖坑法、双指针交换与手动栈非递归实现
c语言·数据结构·笔记·算法·排序算法