leetcode322. 零钱兑换
一:论语
二:题目
三:上码
class Solution {public:/**思路:1.分析题意这个就是我们从coins数组中找出几个数字(可以重复)然后的话我们是需要找出这个几个数字的和为amount;那么这个满足答案的结果是可以有多个,但是我们的要求是求取最少的硬币个数2.动态规划五步走1>:确定dp数组的含义以及下标的含义dp[j] 表示背包容量为j(也就是金额为j)的时候;我们最少为dp[j]个数字2>:确定dp数组的状态递推公式dp[j] = min(dp[j],dp[j-coins[i]]+1);//加这个1代表的是我们加上了coins[i]这个数字3>:确定dp数组的初始化因为这里我们是要求最小的值;所以我们是需要在和初始化的时候将其dp初始为最大值但是当j = 0的时候 也就是背包容量为0的时候我们需要赋初值为0;根据题目中最后一个例子我们可以得出; 4>:确定dp数组的遍历顺序因为可以重复加入,所以的话我们是正序5>:举例验证coins = [1,2,5];amount = 60 1 2 3 4 5 6coins[0] = 1 0 1 2 3 4 5 6coins[1] = 2 1 1 1 2 3 4 5 coins[2] = 5 1 1 1 2 3 4 2 */int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount+1,INT_MAX);dp[0] = 0;for(int i = 0; i < coins.size(); i++) {//物品for(int j = 0; j <= amount; j++) {//背包容量if(j >= coins[i] && dp[j-coins[i]] != INT_MAX)//如果我们的第一个物品的价值不是1的话,那么我们dp[j] = min(dp[j],dp[j-coins[i]] + 1); //对应的dp[j]就是无穷大的,所以我们是不能取其值的}}return dp[amount] == INT_MAX ? -1 : dp[amount];//这个用3目运算符目的是为了当有不满足tiao件的时候} // 我们返回-1
};
leetcode322. 零钱兑换相关推荐
- Leetcode--322. 零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: coins = ...
- Leetcode-322. 零钱兑换个人答案与官方答案的一个对比(以及对测试用例的思考)
题目链接 https://leetcode-cn.com/problems/coin-change/ 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总 ...
- leetcode322 零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: coins = ...
- LeetCode322.零钱兑换(一)
LeetCode刷题记录 文章目录
- 从《零钱兑换》开始的《背包问题》
1. 零钱兑换 Leetcode里有这样一个问题,LeetCode322. 零钱兑换: "给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额.计算并 ...
- c++ 多重背包状态转移方程_背包问题之零钱兑换
读完本文,你可以去力扣拿下如下题目: 518.零钱兑换II ----------- 零钱兑换 2 是另一种典型背包问题的变体,我们前文已经讲了 经典动态规划:0-1 背包问题 和 背包问题变体:相等子 ...
- 518. 零钱兑换 II golang动态规划
518. 零钱兑换 II 给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, coins = [1, ...
- 322. 零钱兑换 golang 动态规划
题目 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: ...
- 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题
动态规划(Dynamic Programming)思路和Python解题示例 动态规划是一种主要用来优化朴素递归的方法,每当输入不同值调用递归函数出现大量重复的(子)输入和调用(返回结果)时,就可以考 ...
最新文章
- 25-----BBS论坛
- [NewLife.XCode]百亿级性能
- [译]RabbitMQ教程C#版 - 远程过程调用(RPC)
- Linux Shell 脚本基础
- Windows监听进程是否退出C++
- c语言输出数字菱形北京理工大学,C语言程序的设计—北京理工大学MOOC提交作业.docx...
- intel cpu 漏洞 linux,Intel CPU架构漏洞越捅越大:打补丁将损失30%性能
- 修改本地管理员密码脚本
- 3个你必须知道的面试新趋势, 抓住秋招尾巴拿下offer
- 设计模式之观察者模式PHP实现
- python代码服务器上运行报错
- Android开发面试简历,android开发工程师简历
- html页面图片可点击事件,html中如何给图片添加点击事件的详解
- 最新 开源 好用的同城投诉爆料平台适合各类公司PHP源码 违法举报 投诉 文明城市 城市经营利器
- Scala基础(四)
- muduo网络库:09---多线程服务器之(单线程、多线程服务器的适用场合)
- 【USACO 2020 January Silver】Loan Repayment 题解
- 云服务上搭建halo博客
- 第三部分 :简单句的补充(并列句)
- 利用MATLAB绘制厄尔尼诺-南方涛动指数(SOI)近20年的变化曲线
热门文章
- python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...
- Nginx 模块的使用
- EditPlus 文件查找功能:在指定文件夹,用正则查寻包含指定内容的文件,指定文件类型,并排除特殊文件名文件
- C和指针之多维数组一行存满后会轮到下一行
- C++之typename
- 用递归实现字符数组的反转
- Android插件化开发之动态加载技术系列索引
- Android之FLAG_ACTIVITY_TASK_ON_HOME
- 【前端就业课 第一阶段】HTML5 零基础到实战(十)JavaScript基础一篇入门
- 营业执照在线一键生成_如何在线制作证件照?证件照一键生成的方法