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];
    }
}
相关推荐
nhdh2 小时前
B+树揭秘:MySQL索引核心原理全解析
数据结构·b树·mysql
海上小飞龙2 小时前
【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒
java·开发语言·算法
青少儿编程课堂2 小时前
后缀自动机解析:本质不同子串与最长重复片段统计
c++·python·算法·bfs·信息学竞赛
朝朝辞暮i2 小时前
C++ 第 12 课:局部变量、作用域、变量生命周期
开发语言·c++·算法
乐迪信息4 小时前
港口船舶逆行怎么管?AI防爆摄像机搭载智能检测算法
大数据·人工智能·深度学习·算法·计算机视觉
Sirens.5 小时前
Java并发锁详解:六类锁策略与 synchronized 底层原理
java·前端·算法
和裕5 小时前
全纸结构重型纸箱能否满足 1 吨以上设备出口熏蒸豁免要求?通关合规性全解析
大数据·运维·网络·人工智能·算法
tangguofeng5 小时前
不带头结点的链队操作集(不含InitFlag)(C语言版)
算法
苏打豆7 小时前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人
蛋蛋的就会顺顺的7 小时前
hot100——矩阵
java·数据结构·算法·leetcode·力扣