leetcode 刷题day36动态规划Part05 背包问题(完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶))

完全背包

完全背包的每件商品都有无限个,和01背包的一不同主要体现在遍历顺序上。为了保证每个物品仅被添加一次,01背包内嵌的循环是从大到小遍历。而完全背包的物品是可以添加多次的,所以要从小到大去遍历。

518. 零钱兑换 II

思路:每一种面额的硬币有无限个是完全背包问题。背包的容量为amount,物品的重量和价值都是硬笔金额。求组合数,
dp[j]表示容量为j时成立的组合数。

代码如下:

class Solution {public int change(int amount, int[] coins) {int[] dp=new int[amount+1];dp[0]=1;for(int i=0;i<coins.length;i++){for(int j=coins[i];j<=amount;j++){dp[j]+=dp[j-coins[i]];}}return dp[amount];}
}

377. 组合总和 Ⅳ

思路:本题与上一题的区别在于本题是求排列的个数。

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

代码如下:

class Solution {public int combinationSum4(int[] nums, int target) {int[] dp=new int[target+1];dp[0]=1;for(int j=0;j<=target;j++){for(int i=0;i<nums.length;i++){if(j>=nums[i]){dp[j]+=dp[j-nums[i]];}}}return dp[target];}
}

70. 爬楼梯 (进阶)

思路:dp[i]指爬到有i个台阶的楼顶,有dp[i]种方法。台阶可以重复使用-完全背包问题,从前往后遍历背包。求排列的个数,背包是外层循环。

代码如下:

import java.util.Scanner;
class Main{public static void main(String [] args){Scanner scan=new Scanner(System.in);int m,n;while (scan.hasNextInt()) {n=scan.nextInt();m=scan.nextInt();int[] dp=new int[n+1];dp[0]=1;for(int j=1;j<=n;j++){for(int i=1;i<=m;i++){if(j>=i) dp[j]+=dp[j-i];}}System.out.println(dp[n]);}}
}

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

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

相关文章

、并发请求

初始化 const axios require(axios) const apis [url1, url2, url3] // 模拟 http apis并发函数 /*** param {Array<string>} apis* param {number} maxNum 最大并发量* returns {Promise}*//*** param {Array<string>} apis 请求的API集* param {number} maxN…

在线测径仪都有哪些别称?

在线测径仪广泛运用于电线电缆、输送管、金属丝、PVC管、医疗器械、塑料、金属拉丝、橡胶、高线、圆钢、钢筋、螺纹钢、钢管、轧钢等生产行业&#xff0c;主要用于这些行业生产出的产品的直径、椭圆度&#xff08;双轴及以上测头&#xff09;等的检测。 测径仪为在线检测设备&a…

等保测评中的关键技术应用:防火墙与入侵检测系统

在当今数字化时代&#xff0c;网络安全已成为企业运营不可或缺的一部分。等级保护&#xff08;简称“等保”&#xff09;制度作为中国网络安全领域的一项重要法规&#xff0c;旨在通过不同等级的安全保护要求&#xff0c;确保信息系统免受各类威胁和破坏&#xff0c;保障信息的…

【C#生态园】打造现代化跨平台应用:深度解析.NET桌面应用工具

选择最适合你的.NET UI框架&#xff1a;全面解析六种热门选择 前言 在现代软件开发中&#xff0c;选择合适的桌面应用框架和UI库对于开发人员来说至关重要。本文将介绍几种流行的.NET桌面应用框架和UI库&#xff0c;包括Eto.Forms、Avalonia、ReactiveUI、MahApps.Metro、Mat…

智能指针详解

目录 智能指针原理 RAII Unique_ptr Shared_ptr Shared_ptr缺点 定制删除器 在C库里提供的智能指针有跟多&#xff0c;如下图所示&#xff0c;使用时需要包含头文件<memory>。下面将详细介绍这些智能指针的底层原理和缺点&#xff0c;还有每个智能指针的应用场景。…

AI寒冬?不,2025年将是AI代理之年

引言 近年来,人工智能(AI)的发展速度令人瞩目,但一些观察者认为今年的前六个月相对“缓慢和无趣”。然而,这种观点可能忽略了AI在多个领域的持续进步。本文将探讨为什么我们不应该轻易使用“AI寒冬”这样的说法,并展望2025年作为AI代理之年的潜力。 为何不应轻易使用“…

Linux No space left on device分析和解决

报错解释&#xff1a; "No space left on device" 错误表示你的Linux设备&#xff08;通常是磁盘分区&#xff09;上没有剩余空间了。这可能是因为磁盘已满&#xff0c;或者inode已满。磁盘空间是指磁盘上的实际空间&#xff0c;而inode是用来存储文件元数据的数据结…

嘉立创EDA中PCB快速画螺旋触摸焊盘或其他不规则形状

常见触摸焊盘 首先需要有CAD软件 使用CAD的原因&#xff1a;能快速编辑线条和不规则形状&#xff0c;在嘉立创EDA中不能快速完成。 画图整体步骤&#xff1a; 1&#xff0c;先在CAD中画出螺旋线&#xff08;HELIX&#xff09; 这里需要设置底部半径&#xff0c;圈数和顶部半…

【MYSQL】mysql约束---自增长约束(auto_increment)

1、概念 在Mysql中&#xff0c;当主键为自增长后&#xff0c;这个主键的值就不再需要用户输入数据了&#xff0c;而由数据库系统根据定义自动赋值。每增加一条记录&#xff0c;主键会自动以相同的步长进行增长。 注意&#xff1a;自增长约束通常与主键放在一起使用。 通过给…

网盘能否作为FTP替代产品?企业该如何进行FTP国产化替代?

近年来&#xff0c;信创的概念引入和高效实践落地让更多的行业企业自发性地进行国产化替代&#xff0c;目前信创国产化替代还多发生在操作系统和应用层面&#xff0c;软件工具等目前还在下一阶段规划&#xff0c;但很多企业未雨绸缪&#xff0c;已经在做调研和尝试。 FTP作为世…

守护网络安全:从日常生活做起的防护策略

引言 在信息化时代&#xff0c;网络已成为我们生活中不可或缺的一部分。它为我们提供了快速沟通和便捷服务的渠道&#xff0c;使我们能够高效地办理业务、完成工作和享受娱乐。然而&#xff0c;随着网络的普及和信息化程度的加深&#xff0c;我们在享受便利的同时&#xff0c;…

codetop标签双指针题目大全解析(三),双指针刷穿地心!!!!!

复习比学习更重要&#xff0c;更需要投入时间&#xff0c;更需要花费精力 1.字符串的排列2.找出字符串中第一个匹配的下标3.最大连续1的个数II4.数组中的山脉5.移除元素6.两个数组的交集II7.有序数组的平方8.删除有序数组中的重复项II9.寻找重复数10.水果成篮 1.字符串的排列 …

JavaScript 与 HTML 的结合

在 HTML 页面中嵌入 JavaScript 代码是实现动态效果和交互功能的关键一步。下面是一些常用的方法来实现 JavaScript 与 HTML 的结合。 内联方式&#xff1a;可以直接在 HTML 元素的事件属性中嵌入 JavaScript 代码。例如&#xff0c;可以在按钮的 onclick 属性中添加 JavaScri…

【黑马点评】使用RabbitMQ实现消息队列——3.使用Jmeter压力测试,导入批量token,测试异步秒杀下单

3 批量获取用户token&#xff0c;使用jmeter压力测试 3 批量获取用户token&#xff0c;使用jmeter压力测试3.1 需求3.2 实现3.2.1 环境配置3.2.2 修改登录接口UserController和实现类3.2.3 测试类 3.3 使用jmeter进行测试3.4 测试结果3.5 将用户登录逻辑修改回去 3 批量获取用户…

Command | Ubuntu 个别实用命令记录(新建用户、查看网速等)

1. 实用命令 1.1 系统相关 1.1.1 查看系统、用户信息等 查看当前系统硬件架构 uname -m注&#xff1a;mac 上也能用 查看当前系统的操作系统及版本 cat /etc/os-release | grep "PRETTY_NAME"查看当前系统单个cpu的可用核心数 cat /proc/cpuinfo | grep "…

前端练习小项目 —— 让图片变得更 “色”

前言&#xff1a;相信读者在学习完了HTML、CSS和JavaScript之后已经想要迫不及待的想找一个小型的项目来练练手&#xff0c;那么这篇文章就正好能满足你的 “需求”。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 在开始学习…

不动产证ocr识别场景解析、房产证识别API

不动产证OCR识别、房产证识别接口是通过光学字符识别技术&#xff08;OCR&#xff09;从不动产证书的图像或扫描件中自动提取关键信息的技术应用。该场景的主要目标是提高信息录入的效率&#xff0c;减少人工输入的错误&#xff0c;并能自动化处理大量不动产证书、房产证的数据…

基于springboot+小程序的智慧物业平台管理系统(物业1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 智慧物业平台管理系统按照操作主体分为管理员和用户。 1、管理员的功能包括报修管理、投诉管理管理、车位管理、车位订单管理、字典管理、房屋管理、公告管理、缴费管理、维修指派管理、…

37 | 实战二(下):重构ID生成器项目中各函数的异常处理代码

平时进行软件设计开发的时候&#xff0c;我们除了要保证正常情况下的逻辑运行正确之外&#xff0c;还需要编写大量额外的代码&#xff0c;来处理有可能出现的异常情况&#xff0c;以保证代码在任何情况下&#xff0c;都在我们的掌控之内&#xff0c;不会出现非预期的运行结果。…