day44|● 完全背包● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

news/2023/5/28 8:26:27

518. 零钱兑换 II

1.代码

class Solution {
public:int change(int amount, vector<int>& coins) {vector<int>f(amount + 1, 0);f[0] = 1;for (int i = 0; i < coins.size(); i++) {for (int j = coins[i]; j <= amount; j++) {f[j] += f[j - coins[i]];}}return f[amount];}
};

2.动规五部曲

1.确定dp数组和其下标含义

由题目说可知求选择钱票得到总和为target的方案数,dp[j]相当于选择物品体积相加为i的方案数

2.递推公式

每次加入物品,都有可能到达体积j,所以在每次加上这个物品到达j时加上这个方案数

f[j] += f[j - coins[i]];

3.初始化

因为在for循环和dp公式中没有确切的值,肯定需要初始化,初始化第一个就可以保证后面的推导出来了,f[0]=1,代表背包为0时的方案数为1,说明不选任何东西

4.确定遍历顺序

第一层for循环就是选取每个物品,第二层循环也为正序,因为需要重复选取,正序就能用到之前的背包了,所以可以重复选取,第二层就是遍历每一个不同大小的背包来装每一个物品进行筛选。

5.举例说明dp数组


377. 组合总和 Ⅳ

1.代码

class Solution {
public:int combinationSum4(vector<int>& nums, int target) {vector<int>f(target + 1, 0);f[0] = 1;for (int i = 0; i <= target; i++) {for (int j = 0; j < nums.size(); j++) {if (i >= nums[j] && f[i] < INT_MAX - f[i - nums[j]]) f[i] += f[i - nums[j]];}}return f[target];}
};

1.动规五部曲

4.确定遍历顺序

因为是求排列数,不是组合数,说明不一样的顺序也可以,如果物品放到里面时,外面的每个背包都可以进行物品筛选,所以两层for循环需要反过来顺序

如果求组合数就是外层for循环遍历物品,内层for遍历背包

如果求排列数就是外层for遍历背包,内层for循环遍历物品

 第一层遍历背包,第二层遍历物品,因为顺序翻过来了 ,那么不能在for循环中增加判断条件。在for循环外加if就行了,还需要确保超过int最大范围

5.模拟

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

倍福--资料查找方式

问题描述:有时调试过程中出现问题,或者需要接触一些新的技术点,或需要知道某个模块如何应用的,就需要进行资料搜索。方法如下 1、 官方资料搜索 2、 软件下载,以TwinCat2下载为例 首页 选择产品下的—》自动化软件—》twinCAT 选择以下子目录

倍福ADS通讯协议包格式

ADS在传输层上使用的是TCP协议&#xff0c;同样在数据通讯时需要TCP的三次握手。 1&#xff0e;数据包格式 2&#xff0e;AMS Header主体包格式 3&#xff0e;ADS基本CommID命令 4&#xff0e;捕包工具 5&#xff0e;发送字节包格式解析 ---------------------------------…

关于计算机应聘的英语作文,计算机面试英文自我介绍

计算机面试英文自我介绍my name is xx-x, you might be able to associate a qiong precious jade novel, word is indeed the two words, the difference is not so beautiful person, ha ha. actually, my classmates more like call with my english name, so that the mean…

java助教面试自我介绍_助教面试自我介绍参考

助教面试自我介绍参考助教面试自我介绍参考1各位考官好,今天能够站在这里参加面试,有机会向各位考官请教和学习,我感到非常的荣幸.希望通过这次面试能够把自己展示给大家,希望大家记住我.我叫xx。今年22&#xff0c;我平时喜欢看书和上网浏览信息.我的性格比较开朗,随和.能关系…

Java知识体系大纲!java开发英文面试自我介绍

技术能力 通常&#xff0c;「技术能力」这个部分将紧接着你的个人简介之后&#xff0c;放在简历的核心版面。这样设计是有道理的&#xff0c;因为它能够帮助雇主更快的判断你的技能是否与需求相吻合。 因此在制作这一部分内容时&#xff0c;你应该考虑以下两点&#xff1a; …

Jinja2的int如何转换为str

今天遇到了这么一个问题就是: 我在后台创建了一个字典,键的类型是str, 我在前端使用jinja2中取值&#xff0c;没有取到然后在后台打印&#xff0c;原来键值是int类型&#xff0c;因为键值是数据库中取出来的是int类型,需要转换str才能取到值 最后使用{{ [int] | join}}成功取…

Ansible Jinja2 模板使用

主机规划 主机名称操作系统版本内网IP外网IP(模拟)安装软件ansi-managerCentOS7.5172.16.1.18010.0.0.180ansibleansi-haproxy01CentOS7.5172.16.1.18110.0.0.181ansi-haproxy02CentOS7.5172.16.1.18210.0.0.182ansi-web01CentOS7.5172.16.1.18310.0.0.183ansi-web02CentOS7.5…

Jinja2循环控制

目录 描述 Jinja2循环控制语法 使用示例 注意事项 描述 Jinja2模板中的条件控制语句&#xff08;for&#xff09;可以控制前端逻辑显示。 Jinja2循环控制语法 Jinja2的循环控制与Python类似&#xff0c;但还是有一些不同&#xff1a; {% for condition %}body... {% end…

Jinja2模板过滤器

目录 过滤器的作用 如何添加过滤器 代码展示 运行结果 过滤器介绍 1. safe 2. capitalize 3. lower 4. upper 5. title 6. trim 7. striptags 过滤器的作用 Jinja2模板中的过滤器起到一个简单的渲染作用&#xff0c;它可以把接收到的数据经过简单的处理重新显示。…

Jinja2条件控制

目录 描述 Jinja2条件控制语法 条件控制True/False场景 使用示例 1. 条件表达式的值是False 2. 条件表达式的值是None 3. 条件表达式的值为字符串 4. 条件表达式的值是数值型 5. 条件表达式的值是列表 6. 条件表达式的值是元组 7. 条件表达式的值是集合 8. 条件表达…

(学习flask) 02 Jinja2模板引擎

模板 模板是一个包含响应文本的文件&#xff0c;其中包含用占位变量表示的动态部分&#xff0c;其具体值只会在请求上下文中才能被具体赋值。 Jinja2模板引擎 定义index.html和user.html index.html <h1>Hello!</h1>user.html <h1>Hello,{{name | capita…

Jinja2学习

在看廖老师的python教程时&#xff0c;第一次接触Jinja2&#xff0c;通读了下Jinja2的官方文档&#xff0c;先了解基础。

在牛客网上刷哔哩哔哩2021校招题后有感

昨天晚上&#xff0c;在牛客网上刷了一下今年bilibili校招测试开发的原题后&#xff0c;感觉整体的题目不是特别难&#xff0c;主要是检查基础知识。总共有三十三道题&#xff0c;但是因为基础还比较薄弱&#xff0c;所以错了十五道题&#xff0c;其中三道算法题&#xff0c;我…

2021届BiliBili校招 数据分析/后端开发 笔试题记录

文章目录1. 背景2. 题型3. 选择题范围3.1 数据结构3.2 计算机网络3.3 操作系统3.4 计算机组成3.5 其他4. 算法题4.1 第一题4.2 第二题4.3 第三题5. 往年试题1. 背景 最近做了BiliBili2021届校招数据分析岗的笔试题&#xff0c;和后端开发是同一套题&#xff0c;之前在找相关资…

php自我介绍50字,简短自我介绍50字

简短自我介绍50字介绍自己的姓名、年龄、相貌、个性、爱好等。下面有一例供你参考&#xff1a;我叫xxx&#xff0c;是一个充满朝气的阳光女孩。模样虽谈不上很美&#xff0c;但也绝不难看&#xff0c;上翘的嘴角&#xff0c;薄薄的嘴唇&#xff0c;笑起来有个浅浅的酒窝。 我的…

基于EasyExcel实现百万级数据导出

基于EasyExcel实现百万级数据导出 在项目开发中往往需要使用到数据的导入和导出&#xff0c;导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 大数据的导入和导出&#xff0c;相信大家在日常的开发、面试中都会遇到。 很多问题只要这一次解决…

C实现hough变换拟合直线

原理&#xff1a; 对于平面上的一个点&#xff08;x1,y1&#xff09;,满足方程&#xff1a;y1mx1b&#xff0c;经过点&#xff08;x1&#xff0c;y1&#xff09;的直线有无数条&#xff0c;只要其满足刚才的直线方程。然而&#xff0c;可以把直线方程变形一下&#xff0c;b-x1…

力扣(LeetCode)2299. 强密码检验器 II(C++/Python3)

题目描述 模拟 仅当密码包含强密码的所有特性&#xff0c;它是一个 强 密码。提示我们&#xff0c;遍历密码&#xff0c;维护 444 个标志&#xff0c;标志记录特性。遍历结束&#xff0c;根据标志判断特性。 class Solution { public:bool strongPasswordCheckerII(string pa…

hough变换 python+OpenCV的简单实现

直线的hough变换 import cv2 import numpy as np# 导入图片&#xff0c;处理图片&#xff0c;变为灰图 img cv2.imread(lines.jpg) drawing np.zeros(img.shape[:], dtypenp.uint8) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) edges cv2.Canny(gray, 50, 150)# hough直线…

Hough变换之Hough直线检测

原创文章&#xff0c;保留所有版权。转载请注明出处&#xff1a;http://www.letao.ai/?p282 Hough变换的主要思想是&#xff0c;基于已知边缘点的&#xff0c;对所有可能的参数空间中的参数进行投票。在正确的参数取值处&#xff0c;形成峰值&#xff0c;最终得到要求的结果。…