一:论语

二:题目

三:上码

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. 零钱兑换相关推荐

  1. Leetcode--322. 零钱兑换

    给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: coins = ...

  2. Leetcode-322. 零钱兑换个人答案与官方答案的一个对比(以及对测试用例的思考)

    题目链接 https://leetcode-cn.com/problems/coin-change/ 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总 ...

  3. leetcode322 零钱兑换

    给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: coins = ...

  4. LeetCode322.零钱兑换(一)

    LeetCode刷题记录 文章目录

  5. 从《零钱兑换》开始的《背包问题》

    1. 零钱兑换 Leetcode里有这样一个问题,LeetCode322. 零钱兑换: "给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额.计算并 ...

  6. c++ 多重背包状态转移方程_背包问题之零钱兑换

    读完本文,你可以去力扣拿下如下题目: 518.零钱兑换II ----------- 零钱兑换 2 是另一种典型背包问题的变体,我们前文已经讲了 经典动态规划:0-1 背包问题 和 背包问题变体:相等子 ...

  7. 518. 零钱兑换 II golang动态规划

    518. 零钱兑换 II 给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, coins = [1, ...

  8. 322. 零钱兑换 golang 动态规划

    题目 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: ...

  9. 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题

    动态规划(Dynamic Programming)思路和Python解题示例 动态规划是一种主要用来优化朴素递归的方法,每当输入不同值调用递归函数出现大量重复的(子)输入和调用(返回结果)时,就可以考 ...

最新文章

  1. 25-----BBS论坛
  2. [NewLife.XCode]百亿级性能
  3. [译]RabbitMQ教程C#版 - 远程过程调用(RPC)
  4. Linux Shell 脚本基础
  5. Windows监听进程是否退出C++
  6. c语言输出数字菱形北京理工大学,C语言程序的设计—北京理工大学MOOC提交作业.docx...
  7. intel cpu 漏洞 linux,Intel CPU架构漏洞越捅越大:打补丁将损失30%性能
  8. 修改本地管理员密码脚本
  9. 3个你必须知道的面试新趋势, 抓住秋招尾巴拿下offer
  10. 设计模式之观察者模式PHP实现
  11. python代码服务器上运行报错
  12. Android开发面试简历,android开发工程师简历
  13. html页面图片可点击事件,html中如何给图片添加点击事件的详解
  14. 最新 开源 好用的同城投诉爆料平台适合各类公司PHP源码 违法举报 投诉 文明城市 城市经营利器
  15. Scala基础(四)
  16. muduo网络库:09---多线程服务器之(单线程、多线程服务器的适用场合)
  17. 【USACO 2020 January Silver】Loan Repayment 题解
  18. 云服务上搭建halo博客
  19. 第三部分 :简单句的补充(并列句)
  20. 利用MATLAB绘制厄尔尼诺-南方涛动指数(SOI)近20年的变化曲线

热门文章

  1. python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...
  2. Nginx 模块的使用
  3. EditPlus 文件查找功能:在指定文件夹,用正则查寻包含指定内容的文件,指定文件类型,并排除特殊文件名文件
  4. C和指针之多维数组一行存满后会轮到下一行
  5. C++之typename
  6. 用递归实现字符数组的反转
  7. Android插件化开发之动态加载技术系列索引
  8. Android之FLAG_ACTIVITY_TASK_ON_HOME
  9. 【前端就业课 第一阶段】HTML5 零基础到实战(十)JavaScript基础一篇入门
  10. 营业执照在线一键生成_如何在线制作证件照?证件照一键生成的方法