leetcode 322.零钱兑换

思路:完全背包。

首先分析问题我们可以知道,这个题的本质就是对于每一个硬币选于不选的问题,也就是所谓的背包问题。而后,这里的每一个硬币都是无限多的,也就是说,这不是01背包或者其他背包问题,而是对于完全背包的索引。

好了,那么知道了算法之后我们再看题目要求,说的是让选的硬币数恰好是amount,也就是说不存在装不满的状态,也不存在装不下的状态(这个是最基础的)。那么就需要我们为数组进行初始化,既然说是最少的数量,那么我们就把值赋值成比较大的数,这里直接用amount+1了,大小也是开在amount+1,开的大反而会错,因为会有别的状态混进来;开小了只会超出空间限制。

之后就是对于完全背包的模板套就行了,只不过max改成了min,每个硬币的价值都是1,所以需要+1。这是因为每个硬币都代表一个数量,也就是1,所以把硬币的值当作容量,把硬币本身这个数量当作价值。

注意:不要忘记为f[0]=0,这是因为要想达到答案,f[0]=0肯定会被转移到,这个时候才是正好amount个数值。其他的值不用变,直接赋值大一点就好。

class Solution {
public:int coinChange(vector<int>& coins, int amount) {vector<int>f(amount+1,amount+1);//数组不能开大,也不能开小,否则会有不同的状态混里面f[0]=0;//这里就是给初始化的值一个交代for(int i=0;i<coins.size();i++){for(int j=coins[i];j<=amount;j++){if(f[j-coins[i]]<amount+1)//也就是说在当前的状态里面就开始转移更新f[j]=min(f[j],f[j-coins[i]]+1);}}return f[amount]>=amount+1?-1:f[amount];//判断这个状态到底有没有更新,如果它的值还是初始值,那么就是没有解}
};

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

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

相关文章

Claude 3似乎比GPT-4性能更高,更多的人在尝试使用它

Anthropic 是 OpenAI 的主要竞争对手之一&#xff0c;于 3 月初推出了其最新的大型语言模型 (LLM)&#xff0c;称为 Claude 3。事实证明&#xff0c;Claude 3 的性能优于 OpenAI 的旗舰产品 GPT-4&#xff0c;这让 AI 社区感到惊讶&#xff0c;这标志着 GPT-4 的第一个实例被超…

C++中string容器的元素访问

以string容器为例&#xff0c;容器中元素访问的方式有三种&#xff1a; 1.下标[ ]运算符重载 访问元素 普通对象&#xff1a;char& operator[] (size_t pos) 常对象&#xff1a;const char& operator[] (size_t pos) const string s1("abcdefg"); cout &…

线程的常用方法有哪些?

1、典型回答 线程常用方法有以下这些&#xff1a; start()&#xff1a;启动线程&#xff0c;并调用线程的 run() 方法来执行任务。run()&#xff1a;线程的实际工作方法 (普通方法)&#xff0c;定义线程要执行的任务。sleep(long millis)&#xff1a;暂停当前线程的执行&#…

镜像中更新cuda 配置

1. 进入base 镜像对应的容器&#xff1a; 1.1 docker run -it --gpus all -v /home/huangxiujie:/home/huangxiujie iregistry.baidu-int.com/huangxiujie/tsai_reversing:paddlecloud-v2.3.0-gcc820-cuda11.0_cudnn8-nccl2.12.10 /bin/bash 1.2. docker 挂载本地目录 docker…

Java只有中国人在搞了吗?

还是看你将来想干啥。想干应用架构&#xff0c;与Java狗谈笑风生&#xff0c;沆瀣一气&#xff0c;你就好好写Java&#xff0c;学DDD&#xff0c;看Clean Architecture。你想成为炼丹玄学工程师&#xff0c;年入百万&#xff0c;就选python&#xff0c;专精各种paper。你不在意…

对话李喆:Martech在中国需要转化成以客户需求为驱动的模式

关于SaaS模式在中国的发展&#xff0c;网上出现多种声音。Marteker近期采访了一些行业专家&#xff0c;围绕SaaS模式以及Martech在中国的发展提出独特观点。赛诺贝斯副总裁李喆认为&#xff0c;SaaS可以分为场景化的SaaS、一体化的SaaS和功能化的SaaS&#xff0c;三者都有一定规…

【vue3学习之路(一)】

文章目录 前言一、vue3项目创建1.1环境准备1.1.1 基于 vue-cli 创建&#xff08;脚手架创建&#xff09;1.1.2 基于 vite 创建&#xff08;推荐&#xff09; 二、熟悉流程总结 前言 参考视频&#xff1a;https://www.bilibili.com/video/BV1Za4y1r7KE?p10&spm_id_frompag…

Switch搜不到5g wifi

Switch偶尔可以连上5GHz的SSID&#xff0c;但有时却又搜不到&#xff0c;其实只是频道在作祟。 频道是为了减少干扰 Switch仅有特定频道才能连接 刚刚提到&#xff0c;不论2.4GHz或是5GHz频段都有不同的频道可以选择&#xff0c;即便都是2.4GHz频段选择不同频道才能避免之间的…

代码随想录算法训练营第五十七天|647 回文子串 516.最长回文子序列

647. 回文子串 https://leetcode.com/problems/palindromic-substrings/ 思路&#xff1a; 当我们看到两个下标 i&#xff0c; j 上 s[i] ! s[j], 那么 s[i: j1] 一定不是回文子串。 如果s[i] s[j], 那么我们可以在检查 s[i1: j] 是不是回文串。如果暴力搜索的话是 O(n^3) 的…

【设计模式】单例模式详解

单例模式&#xff1a; 定义&#xff1a;确保一个类在任何情况下都绝对只有一个实例&#xff0c;并提供一个全局访问点。为了防止出现重复的创建。 单例模式是JAVA中最简单的设计模式之一。属于创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个…

辅助功能IOU(交并比)_3.2

实现两个目标框的交并比候选框在多目标跟踪中的表达方式及相应转换方法 IOU(Intersection over Union)&#xff0c;“交并比”&#xff0c;是计算机视觉和图像处理中常用的一个评价指标&#xff0c;尤其在目标检测任务中用来衡量模型预测的目标框与真实目标框的重合程度。 具体…

(附源码)基于Spring Boot + Vue的招聘平台设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31…

服务消费微服务

文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖&#xff08;刷新&#xff09;5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创…

【windows】安装 Tomcat 及配置环境变量

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

【学习】Python库addict,使用Dict 的类

from addict import Dict 这行代码导入了 Dict 类&#xff0c;它来自于 addict 模块。在这个上下文中&#xff0c;addict 是一个 Python 库&#xff0c;它提供了一个名为 Dict 的类&#xff0c;用于创建可通过属性访问的字典对象。 使用 addict 中的 Dict 类可以方便地创建字典…

【大模型】VS Code(Visual Studio Code)上安装的扩展插件用不了,设置VS Code工作区信任

文章目录 一、找到【管理工作区信任】二、页面显示处于限制模式&#xff0c;改为【信任】三、测试四、总结 【运行环境】win 11 相关文章&#xff1a; 【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程 【问题】之前在 VS Code上安装 CodeGeeX 插件后&…

Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog

QWidget类 简介 QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能&#xff0c;并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口&#xff0c;从而实现复杂的用户界面。 特性 提供了窗口的基本功能&#xff0c;包括绘制、事件处理、…

Linux命令学习入门

文章目录 登录注销关机重启Vim编辑器快捷键文件目录类打包、解包、压缩和解压指令输出重定向>和追加>>指令时间日期类搜索查找类用户管理文件所有者所在组权限管理变更权限crond任务时间调度crond相关指令&#xff1a;特殊符号说明&#xff1a; at定时任务磁盘分区磁盘…

作用域闭包

一、闭包的概念 当函数可以记住并访问所在的词法作用域时&#xff0c;就产生了闭包&#xff0c;即使函数时在当前词法作用域之外执行。 下面用一些代码来解释这个定义。 function foo(){var a 2;function bar() {console.log(a);}bar(); }foo();这段代码看起来和嵌套作用域…

记录三菱:Works2-FB块

创建一个FB块&#xff0c;启保停&#xff0c;定义输入输出引脚&#xff0c;注意这里的数据类型是Bit 打开主程序&#xff0c;将FB块拖出来 启保停&#xff1a;加入时间设定&#xff0c;时间显示倒着