代码随想录第三十八天(一刷C语言)|零钱兑换II组合总数和 IV

创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。

一、零钱兑换II

思路:参考carl文档

1、确定dp数组以及下标的含义:凑成总金额j的货币组合数为dp[j]。

2、确定递推公式:dp[j] 就是所有的dp[j - coins[i]]相加,递推公式为dp[j] += dp[j - coins[i]]。

3、dp数组如何初始化:dp[0] = 1理解为凑成总金额0的货币组合数为1,其余下标dp[j]初始化为0,这样累计加dp[j - coins[i]]时不会影响dp[j]。

4、确定遍历顺序:

 外层for循环遍历物品(钱币),内层for遍历背包(金钱总额)(组合)

for (int i = 0; i < coins.size(); i++) {                     for (int j = coins[i]; j <= amount; j++) {             // 遍历背包dp[j] += dp[j - coins[i]];}
}

5、举例推导dp数组

ledcode题目:https://leetcode.cn/problems/coin-change-ii/description/

AC代码:

int change(int amount, int* coins, int coinsSize) {int dp[amount + 1];memset(dp, 0, sizeof(dp));dp[0] = 1;for (int i = 0; i < coinsSize; i++) {for (int j = coins[i]; j <= amount; j++) {dp[j] += dp[j - coins[i]];}}return dp[amount];
}

二、组合总数和 IV

思路:参考carl文档

1、确定dp数组以及下标的含义:凑成目标正整数为i的排列个数为dp[i]。

2、确定递推公式:dp[i](考虑nums[j])可以由 dp[i - nums[j]](不考虑nums[j]) 推导出来。

排列个数dp[i - nums[j]],是dp[i]的一部分。求装满背包有几种方法,递推公式一般都是dp[i] += dp[i - nums[j]]。

3、dp数组如何初始化:由递推公式dp[i] += dp[i - nums[j]]知dp[0]初始化为1,非0下标的dp[i]初始化为0,这样才不会影响dp[i]累加dp[i - nums[j]]。

4、确定遍历顺序:target(背包)放在外循环,将nums(物品)放在内循环,内循环从前到后遍历。(排列)

5、举例来推导dp数组

lecode题目:https://leetcode.cn/problems/combination-sum-iv/description/

AC代码:

int combinationSum4(int* nums, int numsSize, int target) {int dp[target + 1];memset(dp, 0, sizeof(dp));dp[0] = 1;for (int i = 1; i <= target; i++) {for (int j = 0; j < numsSize; j++) {if (nums[j] <= i && dp[i - nums[j]] < INT_MAX - dp[i]) {dp[i] += dp[i - nums[j]];}}}return dp[target];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293492.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第11章 GUI Page400~402 步骤二 画直线

运行效果&#xff1a; 源代码&#xff1a; /**************************************************************** Name: wxMyPainterApp.h* Purpose: Defines Application Class* Author: yanzhenxi (3065598272qq.com)* Created: 2023-12-21* Copyright: yanzhen…

设计模式:循序渐进走入工厂模式

文章目录 前言一、引入二、简单工厂模式1.实现2.优缺点3.扩展 三、工厂方法模式1.实现2.优缺点 四、抽象工厂模式1.实现2.优缺点3.使用场景 五、模式扩展六、JDK源码解析总结 前言 软件设计模式之工厂模式。 一、引入 需求&#xff1a;设计一个咖啡店点餐系统。 设计一个咖啡类…

两种方法解决win10开机慢,经验分享

方法一&#xff1a; 1、按快捷键“winR”打开 运行窗口。 2、这时候输入“msconfig”后 &#xff0c;点击“确定”或者按“ENTER”键。 3、这时候会打开一个名为“系统配置”的窗口&#xff0c; 在“常规”选项框下 勾选“有选择的启动”下的“加载系统服务”和“加载启动项”。…

腾讯云服务器上传文件 :Permission denied (os error 13) ,由于权限无法上传

根据网上的修改云服务器上传文件目录的权限&#xff0c;或是用root权限上传本地文件&#xff0c;均失败。 正解办法&#xff1a; ubuntu:/home/wwwroot# sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully首先修…

Android Studio使用Genymotion

1. Genymotion介绍 GenyMotion速度之快令人发指&#xff0c;模拟效果堪比真机调试&#xff0c;支持绝大部分的模拟器功能&#xff0c;甚至包括语音&#xff0c;Google Now&#xff0c;支持eclipse, android studio。非常适合用来开发和演示效果。 2. Genymotion下载 Genymotio…

Linux——缓冲区

我在上篇博客留下了一个问题&#xff0c;那个问题就是关于缓冲区的问题&#xff0c;我们发现 文件有缓冲区&#xff0c;语言有用户级缓冲区&#xff0c;那么缓冲区到底是什么&#xff1f;&#xff0c;或者该怎 么认识缓冲区&#xff1f;这篇文章或许会让你有所认识&#xff0c;…

真实进行软件测试面试中,自动化测试面试到底会问那些?

作者&#xff1a;川石信息 链接&#xff1a;https://www.zhihu.com/question/342170872/answer/813076226 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 自动化测试面试1&#xff1a; 1、使用什么测试框架做的上…

我的应用我做主:扩展线程池

自定义线程创建&#xff1a;ThreadFactory 线程池中的线程是从哪里来的呢&#xff1f; ThreadPoolExecutor(int corePoolSize,//指定了线程池种的线程数量 int maximumPoolSize,//指定了线程池中的最大线程数量。 long keepAliveTime,// 当线程池数量超过了corePoolSize&#x…

pytorch张量的创建

张量的创建 张量&#xff08;Tensors&#xff09;类似于NumPy的ndarrays &#xff0c;但张量可以在GPU上进行计算。从本质上来说&#xff0c;PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。 import torch import numpy torch.manual_seed(7) # 固…

金蝶Apusic应用服务器 loadTree JNDI注入漏洞复现(QVD-2023-48297)

0x01 产品简介 金蝶Apusic应用服务器是一款企业级应用服务器,支持Java EE技术,适用于各种商业环境。 0x02 漏洞概述 由于金蝶Apusic应用服务器权限验证不当,导致攻击者可以向loadTree接口执行JNDI注入,造成远程代码执行漏洞。利用该漏洞需低版本JDK。(漏洞比较旧,8月份…

ARM作业1

汇编实现三个灯闪烁 汇编代码&#xff1a; .text .global _start _start: 设置GPIOE,GPIOF时钟使能LDR R0,0X50000A28 LDR R1,[R0] ORR R1,R1,#(0x3<<4) STR R1,[R0] 设置PE10,PF10,PE8为输出 LED1LDR R0,0X50006000LDR R1,[R0]ORR R1,R1,#(0X1<<20)BIC R1…

清风数学建模学习笔记--灰色关联分析

一&#xff1a;内容&#xff1a;灰色关联分析 介绍&#xff1a;可以分析多个因素之间&#xff0c;哪一个对y的影响大&#xff0c;哪一个对y的影响小。之前学过回归分析中的标准化回归也可以分析&#xff0c;岭回归&#xff0c;lasso回归等都可以分析&#xff0c;那为什么要使用…