题目:

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

例如:
输入: coins = [1, 2, 5], amount = 11
输出: 3
解释: 11 = 5 + 5 + 1输入: coins = [2], amount = 3
输出: -1

分析:可以使用贪心+回溯的方法。每次取最大的硬币去匹配金额。

import java.util.*;int ans = Integer.MAX_VALUE;
public int coinChange(int[] coins, int amount) {if(amount==0){return 0;}dfs(coins,amount,coins.length-1,0);return ans==Integer.MAX_VALUE?-1:ans;
}public void dfs(int[] coins, int amount, int i, int count){//索引值超过数组下限时returnif(i<0){return;}for(int c=amount/coins[i];c>=0;c--){//贪心 每次用最大面值硬币去拟合金额int temp_amount = amount-c*coins[i];int temp_count = c+count;if(temp_amount==0){//金额刚好凑够则跟之前ans比较取最小值ans = Math.min(ans,temp_count);break;}if(temp_count+1>=ans){break;}dfs(coins,temp_amount,i-1,temp_count);}
}

硬币最小数量java相关推荐

  1. Minimum Coins(找到最小数量的硬币)

    中文标题[找到最小数量的硬币] 题目的要求比较简单,要求找到最小数量的硬币. 给定的硬币数量是 1,3, 5 英文描述 英文题目的要求请参考下图: 中文描述 主要要求是你手上已经有 1,3,5 面值的 ...

  2. 《Python语言程序设计》——3.4 实例研究:最小数量的硬币

    本节书摘来自华章计算机<Python语言程序设计>一书中的第3章,第3.4节,作者:[美]梁勇(Y. Daniel Liang) 更多章节内容可以访问云栖社区"华章计算机&quo ...

  3. java练习题 有50枚硬币,可能包括4种类型:1元,5角,1角,5分。已知总价值为20元。求各种硬币的数量。

    问题 有50枚硬币,可能包括4种类型:1元,5角,1角,5分.已知总价值为20元.求各种硬币的数量. 解决思路 对付这一类的问题,最简单的方式莫过于暴力穷举,就是用四个循环,一个一个试,结果满足要求输 ...

  4. java 核桃的数量,[Java教程]【蓝桥杯】历届试题 核桃的数量

    [Java教程][蓝桥杯]历届试题 核桃的数量 0 2016-03-31 23:33:50 历届试题 核桃的数量 时间限制:1.0s   内存限制:256.0MB问题描述 小张是软件项目经理,他带领3 ...

  5. 换硬币 (20 分)Java【循环】

    将一笔零钱换成5分.2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? 输入格式: 输入在一行中给出待换的零钱数额x∈(8,100). 输出格式: 要求按5分.2分和1分硬币的数量依次从大到 ...

  6. 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java

    <LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...

  7. 《LeetCode力扣练习》第155题 最小栈 Java

    <LeetCode力扣练习>第155题 最小栈 Java 一.资源 题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack ...

  8. DOTA2翻硬币网站规则java版本

    DOTA2翻硬币网站规则java版本 package com.yagou.yggx.provider.ygst.task;import java.math.BigDecimal; import jav ...

  9. 有 20 枚硬币,可能包括 4 种类型:1 元、5 角、1 角和 5 分。已知 20 枚硬币的总价值为 10 元,求各种硬币的数量。

    有以下问题 有 20 枚硬币,可能包括 4 种类型:1 元.5 角.1 角和 5 分.已知 20 枚硬币的总价值为 10 元,求各种硬币的数量. 首先我们先来分析一下,每种硬币的情况,1 元最多 10 ...

最新文章

  1. vscode pylint 错误_VScode中报Unable to import #x27;xxx#x27; pylint的解决方案
  2. 【 FPGA 】FIR 滤波器结构和优化(一)之滤波器的对称性(Filter Symmetry)
  3. python写web难受-pythonweb为什么不火-问答-阿里云开发者社区-阿里云
  4. python调用系统命令_Python如何调用外部系统命令
  5. 网络库urillib3
  6. ajax mysql项目 react_Github MIT开源银行电子支付系统(ReactJS+Nodejs+Mysql)
  7. [云炬创业基础笔记]第五章创业机会评估测试2
  8. JavaSE基础知识(5)—面向对象(5.3访问修饰符)
  9. Spring MVC 3模板和Apache Tiles
  10. windows安装卸载mysql
  11. 深度优先搜索——自然数的拆分问题(洛谷 P2404)
  12. 背景图片hover加蒙层_css3实现图片遮罩效果鼠标hover以后出现文字
  13. tp框架操作mysql_Thinkphp框架对数据库的操作(总结)
  14. java零基础对象和类_【JAVA零基础入门系列】Day11 Java中的类和对象
  15. SNF快速开发平台MVC-表格单元格合并组件
  16. 联想 ThinkPad E480无线网卡配置错误导致无法连接无线网解决方案
  17. 服务器微信了早上好,每天问候早上好的微信话语
  18. 小程序源码:自适应来电模拟器
  19. 亚马逊ERP软件贴牌OEM是什么意思有什么优势
  20. (21)打鸡儿教你Vue.js

热门文章

  1. cpan mysql dbd,Perl中DBI和DBD-mysql模块的安装
  2. python学习day07-encode和decode
  3. vuejs简单介绍特点
  4. SPOJ GCDEX (数论)
  5. js设置时间在ie中部兼容总是NAN的问题
  6. document.compatMode
  7. HTC ThunderBolt无法打开3G问题解决方法
  8. iframe页面找父页面的元素
  9. (67)FPGA模块调用(Verilog调用system Verilog)
  10. (37)Verilog HDL拼接运算:拼接操作与重复操作