完全背包变体-排列和组合的循环顺序问题

embedded/2025/3/4 13:06:42/

排列,区分顺序:内层循环物品{1,2},可以让3-2->1-1和3-1->2-2都计算一遍。
组合不区分顺序:外层循环物品{1,2},只会按照物品顺序填充

总结:排列问题中,每个容量的状态更新时,允许任何物品作为最后一步加入(例如和为3时,可以是1+2或2+1),从而覆盖所有顺序;组合问题中,物品按固定顺序处理,只允许在已固定的组合末尾追加新物品,避免重复计算不同顺序的组合。

518. 零钱兑换 II 组合问题,不区分物品的组合顺序

class Solution {
public:int change(int amount, vector<int>& coins) {int n=coins.size();using ll=unsigned long long;vector<ll>dp(amount+10,0);dp[0]=1;//不需要钱的时候,只有一种方案for(auto&& coin:coins)//内层遍历硬币会将金额j的dp覆盖for(int j=1;j<=amount;j++){if(j>=coin){//转移到上一个金额的方案dp[j]=dp[j]+dp[j-coin];//dp[coins.size()-1,j]+dp[coins.size(),j-coin]}}return dp[amount];}
};

377. 组合总和 Ⅳ 排列问题,区分物品的组合顺序

class Solution {
public:int combinationSum4(vector<int>& nums, int target) {using ll=unsigned long long;vector<ll>dp(target+10,0);/*排列,区分顺序:内层循环物品{1,2},可以让3-2->1-1和3-1->2-2都计算一遍。组合不区分顺序:外层循环物品{1,2},只会按照物品顺序填充*/dp[0]=1;//0的时候只有一种组合方式for(int j=1;j<=target;j++){for(auto&& num:nums){if(j>=num)dp[j]+=dp[j-num];}}return dp[target];}
};


http://www.ppmy.cn/embedded/169918.html

相关文章

深入解析 .NET Core 的应用启动流程

随着 .NET Core 的发展&#xff0c;它逐渐成为构建跨平台、高性能 Web 应用的首选框架。了解 .NET Core 的应用启动流程是开发者成功使用该框架的关键&#xff0c;尤其是在调试、优化和部署时。本文将深入探讨 .NET Core 的应用启动过程&#xff0c;从创建 Web 主机、配置服务、…

Stepdown SLOPE for Controlled Feature Selection

文章&#xff1a;《Stepdown SLOPE for Controlled Feature Selection》 如何保证错选率可控地特征选择&#xff1f;&#xff1f;&#xff1f;&#xff1f; 研究背景 现有SLOPE方法主要关注FDR&#xff08;错误发现率&#xff09;控制&#xff0c;但在实际应用中需更严格地控…

使用 malloc 函数创建和操作二维整型数组

目录 一、引言 二、代码实现 三、代码详解 &#xff08;一&#xff09;头文件引入 &#xff08;二&#xff09;定义数组维度 &#xff08;三&#xff09;动态分配二维数组内存 &#xff08;四&#xff09;初始化二维数组 &#xff08;五&#xff09;输出二维数组 &…

Linux系统(以Ubuntu为例)安装高版本nodejs

运行以下命令可以下载并执行 nvm&#xff08;Node Version Manager&#xff09;的安装脚本。这个命令会从 nvm 的官方GitHub仓库下载特定版本的安装脚本并执行它&#xff0c;从而在你的系统上安装 nvm。 详细步骤 打开终端&#xff1a;首先&#xff0c;打开你的终端应用程序。…

02原理篇(D2_SpringBoot 自动装配原理)

目录 一、自动装配机制 1. 简介 2. 自动装配主要依靠三个核心的关键技术 3. run()方法加载启动类 4. 注解SpringBootApplication包含了多个注解 4.1 SpringBootConfiguration 4.2 ComponentScan 4.3 EnableAutoConfiguration 5. SpringBootApplication一共做了三件事 …

数据分析与取证 网络安全技能竞赛

数据分析与取证 网络安全技能竞赛&#xff1a;新手入门指南 在网络安全的世界中&#xff0c;数据分析与取证是两个至关重要的领域。对于刚入行的小白来说&#xff0c;理解这两个领域并运用到竞赛中可能有些困难。本文将带你了解如何在“数据分析与取证 网络安全技能竞赛”中获…

ECU抽象-通信硬件抽象

通信硬件抽象模块实现了对内部和外部通信控制器的统一抽象 1.CAN模块示例 CAN接口&#xff08;CAN Interface&#xff09;&#xff1a; 这是提供给上层服务层&#xff08;如PDU路由模块、通信栈模块等&#xff09;的接口。在这一层&#xff0c;上层服务无需关注具体CAN控制器…