找钱问题也是贪心算法的常见题

是利用贪心算法以局部最优来实现全局最优

问题描述

假如我们有面额为5元,、100元、50元、20元、1元、10元若干张,现在需要找零157元,以最少的张数把他找完需要少张钱。其实贪心算法找钱问题和人一样都是先取面额最大的然后进行比较,少了的话就看最大的还能不能取,不能取就看数额排第二的,以此类推。直达满足条件157,。
157=100+50+5+1+1

代码如下

package itheima_3;
import java.util.ArrayList;public class test {public static void main(String[] args) {int[] tic={5,100,50,20,1,10}; //面额,设每样面额都有n张for (int i=0;i<tic.length-1;i++){//对金额进行排序,降序for(int j=0;j<tic.length-1-i;j++){if(tic[j]<tic[j+1]){int t=tic[j];tic[j]=tic[j+1];tic[j+1]=t;}}}ArrayList<Integer> shortTic = new ArrayList<Integer>();ArrayList<Integer> tolite=new ArrayList<Integer>();tolite.add(0);//占位int gol=157;//需要找的金额for (int i=0;i<tic.length;i++){//把金额转为集合以便进行删除操作shortTic.add(tic[i]);}while (true){ //循环判断取钱int too = 0;for (int i=0;i<tolite.size();i++){too=too+tolite.get(i);}if(too==gol){break;}else if (too>gol){tolite.remove(tolite.size()-1);//删除已取数额最后一个shortTic.remove(0);//删除shortTic中最大的金额}else{tolite.add(shortTic.get(0));//取最大数额}
//            System.out.println(tolite);}tolite.remove(0);//删除占位System.out.println("总金额:"+gol);System.out.println("最终选择面额:"+tolite+" 最少可选:"+tolite.size()+"张");}}

运行结果

java贪心算法实现找钱问题相关推荐

  1. 贪心算法在找钱问题上的使用

    背景: 对于现实生活中的找零问题,假设有数目不限,面值为20,10,5,1的硬币. 求出找零方案,要求:使用数目最少的硬币. 对于此类问题,贪心算法采取的方式是找钱时,总是选取可供找钱的硬币的最大值. ...

  2. java贪心算法 区间调度_贪心算法-区间调度问题解之证明(示例代码)

    一.贪心算法 定义:一个算法是贪心算法,如果它是通过一些小的步骤来一个求解,并且在每一步根据局部情况选择一个决定,使得某些主要的指标得到优化. 二.区间调度问题 1. 问题:我们有一组需求{1,2,3 ...

  3. java贪心算法几个经典例子_经典算法思想5——贪心(greedy algorithm)

    贪心算法,是指在对问题求解时,总是做出再当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是某种意义上的局部最优解. 贪心算法没有固定算法框架,算法设计的关键是贪心策略的选择.必须注 ...

  4. java贪心算法_来谈谈贪心算法

    前言 之前讲了动态规划,在翻阅资料的时候看到了不少谈论贪心算法的,这两种算法也很有相似之处,正好最近又做到了有关贪心的题,所以今天写篇文章来谈一谈. 贪心算法(英语:greedy algorithm) ...

  5. java 贪心算法思路,贪心算法之——黑白点的匹配(两种实现方法),贪心算法...

    贪心算法之--黑白点的匹配(两种实现方法),贪心算法 一.题目 设平面上分布着n个白点和n个黑点,每个点用一对坐标(x, y)表示.一个黑点b=(xb,yb)支配一个白点w=(xw, yw)当且仅当x ...

  6. Java 贪心算法 活动安排问题

    import org.junit.Test;/*** @auther qwh* @create 2022-11-21-21:39*/ public class test1 {public void s ...

  7. java贪心,java实现贪心算法

    并证明了贪心算法解决此问题的有效性,且进行了实例验证,并进 行了复杂度分析,此算法是解决资源组合规划问题较好的方法. 关键词:贪心算法;java 程序;复杂度分析;...... 数据结构与算法 实验名 ...

  8. Java蓝桥杯——贪心算法

    贪心算法 贪心算法:只顾眼前的苟且. 即在对问题求解时,总是做出在当前看来是最好的选择 如买苹果,专挑最大的买. 最优装载问题--加勒比海盗 货物重量:Wi={4,10,7,11,3,5,14,2} ...

  9. Java入门算法(贪心篇)丨蓄力计划

    本专栏已参加蓄力计划,感谢读者支持 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算法 ...

最新文章

  1. java工程师有什么要求_什么是java,java工程师应该具备哪些能力?
  2. window10使用 Hyper-V 创建ubuntu虚拟机并使用增强会话功能
  3. linux通过html显示图片,如何在Linux上将HTML页面转化成Png图片?
  4. IOS 中视图控制器的生命周期
  5. Android短信验证码倒计时
  6. weblogic管理脚本
  7. 前端开发技术:HTML5 JS 前端开发主要功能!
  8. java需求分析和设计,附面试题
  9. 数据预处理之抽取文本信息
  10. CSDN发布博文时出错的截图
  11. 基于FPGA的两种SDI视频方案(GTX+外接芯片)
  12. OpwnWrt 路由器MWAN3多线多拨实现方法
  13. sql统计各部门的的男女员工数
  14. 安装SSMS报错:0x80070643
  15. android什么叫服务器,Android系统中神秘的Bootloader究竟是什么
  16. 循序渐进学SAP系列(一):--SAP该如何入门
  17. 解决硬盘自动休眠问题
  18. vs2010中的Resource View和Class View都为空的有效解决办法
  19. JAVA I/O流 字符流和字节流、节点流和处理流(包装流、过滤流)、缓冲流
  20. QuickSDK-手游出海服务器接入技巧

热门文章

  1. 赞美老师!!!!!!
  2. 工业机器人入门z50的含义_工业机器人实操与应用技巧第版.PDF
  3. 2022年全球市场驱蚊产品总体规模、主要生产商、主要地区、产品和应用细分研究报告
  4. 微信小程序开发一个小型商城(一、准备工作)
  5. Java数据库篇_05 Oracle数据库
  6. 在淘宝上买件东西,背后发生了什么?
  7. 整理了几个Python正则表达式,拿走就能用
  8. daemon not running; starting now at tcp:5037
  9. Canvas 游戏——俄罗斯方块
  10. PERFORM ... ON COMMIT.