当前位置: 首页 > news >正文

【力扣100】【好题】322.零钱兑换 || 01背包完全背包

添加链接描述
思路:

  1. dp[j]数组表示的是在金额达到 j 的时候所需要的最小硬币数
  2. 金额:背包容量,每个硬币的个数都为1:背包中物品的价值,硬币面额:物品重量
  3. dp[j]=min(dp[j],dp[j-coin]+1)
class Solution:def coinChange(self, coins: List[int], amount: int) -> int:dp = [float('inf')] * (amount + 1)dp[0] = 0for coin in coins:  # 遍历硬币for j in range(coin, amount + 1):  # 遍历金额dp[j] = min(dp[j], dp[j - coin] + 1)if dp[amount] == float('inf'):return -1return dp[amount]

01背包(物品有限个数)

1.dp数组含义

dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。

2.dp数组的初始化

在这里插入图片描述

  1. 首先设置dp数组为全0
  2. dp[i][0]全部设置为0(容量为0时背包里无价值)
  3. 第一行也就是dp[0][j]两种情况:
  • 当前容量j<weight[0]时,设置为0(理解为放不下,初始化的时候设置全0,这一部可以跳过)
  • wight[0]<=bagweight时,设置为weight[0](理解为可以放下)
  • for (int j = weight[0]; j <= bagweight; j++) { dp[0][j] = value[0]; }
3.递推公式
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
4.遍历顺序

先遍历物品再遍历重量

for(int i = 1; i < weight.size(); i++) { // 遍历物品,从1开始因为第0行已经被初始化for(int j = 0; j <= bagweight; j++) { // 遍历背包容量if (j < weight[i]) dp[i][j] = dp[i - 1][j];  // 放不下当前这个物品//  可以放下当前这个物品else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}
}

滚动数组

for i in range(len(weight)):  # 遍历物品for j in range(bagWeight, weight[i] - 1, -1):  # 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i])

完全背包(物品无限个数)

for i in range(len(weight)):  # 遍历物品for j in range(weight[i], bagWeight + 1):  # 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i])

相关文章:

【力扣100】【好题】322.零钱兑换 || 01背包完全背包

添加链接描述 思路&#xff1a; dp[j]数组表示的是在金额达到 j 的时候所需要的最小硬币数金额&#xff1a;背包容量&#xff0c;每个硬币的个数都为1&#xff1a;背包中物品的价值&#xff0c;硬币面额&#xff1a;物品重量dp[j]min(dp[j],dp[j-coin]1) class Solution:def …...

工单管理系统建设方案

1.1 系统概述 1.1.1 需求描述 1.1.2 需求分析 1.1.3 重难点分析 1.1.4 重难点解决措施 1.2 系统架构设计 1.2.1 系统架构图 1.2.2 关键技术 1.3 系统功能设计 1.3.1 工单创建 1.3.2 工单管理 1.3.3 工单处理 1.3.4 工单催办 1.3.5 工单归档 1.3.6 工单统计 软件项目全套资料获取…...

什么是农业四情监测设备?

【TH-Q2】智慧农业四情监测设备是一种高科技的农田监测工具&#xff0c;旨在实时监测和管理农田中的土壤墒情、作物生长、病虫害以及气象条件。具体来说&#xff0c;它主要包括以下组成部分&#xff1a; 气象站&#xff1a;用于监测气温、湿度、风速等气象数据&#xff0c;为农…...

Java面试题:请解释Java并发工具包中的主要组件及其应用场景,请描述一个使用Java并发框架(如Fork/Join框架)解决实际问题的编程实操问题

文章标题&#xff1a;《Java内存模型深入解析与多线程并发工具类应用》 引言&#xff1a; 在Java的世界里&#xff0c;掌握内存模型和多线程并发是高级开发者的必备技能。Java内存模型&#xff08;JMM&#xff09;和多线程并发工具包为开发者提供了强大的能力&#xff0c;同时…...

boot应用打包

1.创建项目 2.编写 3.native构建 报错&#xff1a; [WARNING] native:build goal is deprecated. Use native:compile-no-fork instead. [INFO] Found GraalVM installation from GRAALVM_HOME variable. [INFO] Executing: S:\Coding\graalvm-jdk-17_windows-x64_bin\graalv…...

探索数据可视化:Matplotlib 多图布局

多图布局 子视图 import numpy as np import matplotlib.pyplot as pltx np.linspace(0,2*np.pi)plt.figure(figsize(9,6))# 创建子视图 # subplot(2,1,1)表示将当前图形分割成 2 行 1 列的子图网格&#xff0c;并在第 1 个子图位置绘制图形 ax plt.subplot(2,1,1) ax.plot…...

springboot262基于spring boot的小型诊疗预约平台的设计与开发

小型诊疗预约平台 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本小型诊疗预约平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理…...

Java项目修改源码jar文件(无需反编译)

文章目录 应用场景实现方案实现原理注意事项 应用场景 在项目中用了第三方的jar包&#xff0c;但是jar包内某个类不符合项目业务需求&#xff0c;需要修改第三方jar包源码文件内容。 实现方案 首先我们尝试直接修改jar包源码文件内容时&#xff0c;页面上会提示文件是只读的&a…...

java使用BatchPoints批量写入Influxdb

前言 使用时序数据库influxdb时&#xff0c;我们经常需要写入大量的数据。而单单使用influxDB.write&#xff08;Point&#xff09;进行单条写入时&#xff0c;速度过慢&#xff0c;无法支撑时序数据大量写入的速度。 所以我们需要采用批量的方式进行存储&#xff0c;增加写入…...

Java 集合类的高级特性介绍

在 Java 编程中&#xff0c;了解集合类的高级特性对于编写高效和可维护的代码至关重要。以下是一些你应该知道的 Java 集合类的高级特性&#xff0c;以及简单的例子来说明它们的用法。 1. 迭代器&#xff08;Iterators&#xff09;和列表迭代器&#xff08;ListIterators&#…...

使用Docker搭建Caddy

使用Docker搭建Caddy&#xff0c;可以快速部署一个轻量级的、支持自动HTTPS的web服务器。下面将分别介绍使用Docker CLI和Docker Compose两种方式来搭建Caddy服务器&#xff0c;并给出配置文件示例以及参数解释。 使用Docker CLI搭建Caddy 首先&#xff0c;确保你的系统上已安…...

synchronized是重量级锁???

synchronized作为Java程序员最常用同步工具&#xff0c;很多人却对它的用法和实现原理一知半解&#xff0c;以至于还有不少人认为synchronized是重量级锁&#xff0c;性能较差&#xff0c;尽量少用。 但不可否认的是synchronized依然是并发首选工具&#xff0c;连volatile、CA…...

Linux之线程控制

目录 一、POSIX线程库 二、线程的创建 三、线程等待 四、线程终止 五、分离线程 六、线程ID&#xff1a;pthread_t 1、获取线程ID 2、pthread_t 七、线程局部存储&#xff1a;__thread 一、POSIX线程库 由于Linux下的线程并没有独立特有的结构&#xff0c;所以Linux并…...

Python实现线性查找算法

Python实现线性查找算法 以下是使用 Python 实现线性查找算法的示例代码&#xff1a; def linear_search(arr, target):"""线性查找算法:param arr: 要搜索的数组:param target: 目标值:return: 如果找到目标值&#xff0c;返回其索引&#xff1b;否则返回 -1…...

总结Redis的原理

一、为什么要使用Redis 缓解数据库访问压力mysql读请求进行磁盘I/O速度慢&#xff0c;给数据库加Redis缓存&#xff08;参考CPU缓存&#xff09;&#xff0c;将数据缓存在内存中&#xff0c;省略了I/O操作 二、Redis数据管理 2.1 redis数据的删除 定时删除惰性删除内存淘汰…...

计算机设计大赛 疲劳驾驶检测系统 python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…...

什么是智慧公厕?智慧公厕的应用价值有哪些?

在现代社会&#xff0c;城市的发展与人民生活质量息息相关。作为城市基础设施中的重要一环&#xff0c;公共厕所的建设及管理一直备受关注。智慧公厕作为一种公共厕所使用、运行、管理的综合应用解决方案&#xff0c;正逐渐在智慧城市的建设中崭露头角。那么&#xff0c;智慧公…...

VideoDubber时长可控的视频配音方法

本次分享由中国人民大学、微软亚洲研究院联合投稿于AAAI 2023的一篇专门为视频配音任务定制的机器翻译的工作《VideoDubber: Machine Translation with Speech-Aware Length Control for Video Dubbing》。这个工作将电影或电视节目中的原始语音翻译成目标语言。 论文地址&…...

中科数安|公司办公终端、电脑文件数据 \ 资料防泄密系统

#中科数安# 中科数安是一家专注于信息安全技术与产品研发的高新技术企业&#xff0c;其提供的公司办公终端、电脑文件数据及资料防泄密系统&#xff08;也称为终端数据防泄漏系统或简称DLP系统&#xff09;主要服务于企业对内部敏感信息的安全管理需求。 www.weaem.com 该系统…...

PostgreSQL 安装部署

文章目录 一、PostgreSQL部署方式1.Yum方式部署2.RPM方式部署3.源码方式部署4.二进制方式部署5.Docker方式部署 二、PostgreSQL部署1.Yum方式部署1.1.部署数据库1.2.连接数据库 2.RPM方式部署2.1.部署数据库2.2.连接数据库 3.源码方式部署3.1.准备工作3.2.编译安装3.3.配置数据…...

Opencode- Agent 配置清单

&#xff1a;Agent 配置清单 一、基础标识字段字段名类型必填说明namestring✅Agent 唯一标识符&#xff0c;用于调用和路由descriptionstring✅Agent 用途描述&#xff0c;告诉调用者何时使用此 agent二、提示词与工具配置字段名类型必填说明system_promptstring❌Agent 的系统…...

dksjjsndnajdd

一、OpenAI 1.OpenAI是什么简单来说&#xff0c;OpenAI 大模型 是由美国人工智能公司 OpenAI 开发的一系列大型语言模型&#xff08;LLMs&#xff09; 。你可以把它们想象成拥有巨大“知识储备”和“学习能力”的超级大脑&#xff0c;它们被训练用来理解和生成人类语言&#xf…...

静态代码分析:抽象语法树遍历与模式匹配

静态代码分析&#xff1a;抽象语法树遍历与模式匹配 在软件开发中&#xff0c;代码质量直接影响系统的稳定性和可维护性。静态代码分析作为一种无需运行程序即可检测潜在问题的方法&#xff0c;已成为现代开发流程中的重要工具。其中&#xff0c;抽象语法树&#xff08;AST&am…...

Mac系统上冰蝎Behinder的自动化部署与封装实践

1. 环境准备与工具下载 在Mac系统上部署冰蝎Behinder之前&#xff0c;我们需要先准备好必要的环境和工具。首先确保你的Mac系统版本在10.15及以上&#xff0c;因为某些Java特性需要较新的系统支持。我建议使用Homebrew来管理依赖&#xff0c;这是Mac上最受欢迎的包管理工具。 打…...

Asian Beauty Z-Image Turbo 微信小程序前端开发:实时图像生成与分享

Asian Beauty Z-Image Turbo 微信小程序前端开发&#xff1a;实时图像生成与分享 最近在捣鼓一些有意思的AI应用&#xff0c;发现把大模型的能力搬到移动端&#xff0c;特别是像微信小程序这样的轻量级平台上&#xff0c;能玩出很多新花样。今天想和大家聊聊&#xff0c;怎么给…...

BIM设计师必备:Revit等高线地形建模的5个高效技巧与常见问题解决

BIM设计师必备&#xff1a;Revit等高线地形建模的5个高效技巧与常见问题解决 在BIM设计领域&#xff0c;地形建模往往被视为项目的基础性工作&#xff0c;却直接影响着后续设计的准确性和效率。对于经常处理复杂场地的景观设计师、城市规划师和土木工程师来说&#xff0c;Revi…...

ROS话题通信从入门到实战:C++与Python双版本代码详解与避坑指南

1. ROS话题通信基础概念 第一次接触ROS话题通信时&#xff0c;我完全被各种术语搞晕了。后来在实际项目中踩过几次坑才明白&#xff0c;话题通信本质上就是个"广播站"模型。想象一下电台主播&#xff08;发布者&#xff09;通过特定频率&#xff08;话题&#xff09;…...

PVE-CT容器部署Ubuntu轻量级桌面环境全攻略

1. PVE-CT容器与Ubuntu轻量桌面环境简介 如果你正在寻找一种在Proxmox VE&#xff08;PVE&#xff09;环境下快速部署轻量级Linux桌面的方法&#xff0c;那么使用LXC容器搭配Ubuntu系统绝对是值得考虑的选择。我最近在项目中尝试了这种方案&#xff0c;实测下来不仅资源占用低&…...

HY-MT1.5-7B翻译模型效果展示:33种语言互译,实测效果惊艳

HY-MT1.5-7B翻译模型效果展示&#xff1a;33种语言互译&#xff0c;实测效果惊艳 1. 模型核心能力概览 1.1 多语言翻译新标杆 HY-MT1.5-7B是腾讯混元团队推出的新一代翻译大模型&#xff0c;支持33种主流语言之间的高质量互译&#xff0c;并特别优化了5种民族语言及方言变体…...

DLSS Swapper终极指南:如何轻松管理游戏DLSS版本提升画质性能

DLSS Swapper终极指南&#xff1a;如何轻松管理游戏DLSS版本提升画质性能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为游戏玩家设计的开源工具&#xff0c;能够帮助您高效管理游戏中的DLSS、…...