贪心算法是一种不追求最优解,只希望找到较为满意解的方法。贪心算法省去了为找最优解要穷尽所有可能而必须耗费的大量时间,因此它一般可以快速得到比较满意的解。
贪心算法常以当前情况做最优选择,而不考虑各种可能的情况没所以贪心算法不需要回溯。

找零钱问题

人民币的面额有100元、50元、10元、5元、2元、1元等。在找零钱时,可以有很多中方案。例如146的找零方案如下:

(1)100+20+20+5+1
(2)100+20+10+10+5+1
(3)100+20+10+10+2+2+2
(4)100+10+10+10+10+1+1+1+1+1+1

【分析】

利用贪心算法,则选择的是第1种方案,首先选择一张面额最大的人民币,即100元面额的,然后在剩下的46元中选择面额最大的20元。依次选择的都是局部最优解。

code:

#include<stdio.h>
#include <iostream>
#define N 60
int exchage(float n, float *a, int c, float *r);
void main()
{float rmb[] = { 100,50,20,10,5,2,1,0.5,0.2,0.1 };int n = sizeof(rmb) / sizeof(rmb[0]), k, i;float change, r[N];;printf("请输入要找的零钱数:");scanf("%f", &change);for (i = 0; i < n; i++)if (change >= rmb[i])break;k = exchage(change, &rmb[i], n - i, r);if (k <= 0)printf("找不开!\n");else{printf("找零钱的方案:%.2f=", change);if (r[0] >= 1.0)printf("%.0f", r[0]);elseprintf("%.2f", r[0]);for (i = 1; i < k; i++){if (r[i] >= 1.0)printf("+%.0f", r[i]);elseprintf("+%.2f", r[i]);}printf("\n");}system("pause");
}
int exchage(float n, float *a, int c, float *r)
{int m;if (n == 0.0)              /*能分解,分解完成*/return 0;if (c == 0)               /*不能分解*/return -1;if (n < *a)return exchage(n, a + 1, c - 1, r);    /*继续寻找合适的面值*/else{*r = *a;                 /*将零钱保存到r中*/m = exchage(n - *a, a, c, r + 1);     /*继续分解剩下的零钱*/if (m >= 0)return m + 1;          /*返回找零的零钱张数*/return -1;}
}

结果:

贪心算法1——找零钱问题相关推荐

  1. C++贪心算法求解找零钱问题(很形象)

    贪心算法求解找零钱问题 1.什么是贪心算法? 贪心算法是一种策略,总是做出在当前看来是最好的选择,总结出来几个字:寻找最优解 举个例子来说就是:"有一个只能往前走的果园,里边有各种水果让你免 ...

  2. 贪心算法解决找零钱问题

    4.1 找零问题 问题描述: 设有50.20.10.5.1.0.5.0.1等面额的零钱,顾 客购物花了n元,在支付(n / 100 + 1) * 100元后,收银员应如何找 零,才能使找回的钱数最少. ...

  3. c语言贪心算法零钱问题,贪心算法(2)——找零钱问题

    一.找零钱问题 例题1: 有 1 元,5元,10元,20元,100元,200元的钞票无穷多张.现在使用这些钞票支付X元,最少需要多少张钞票. X = 628 最佳支付方法: 3张200块的,1张20块 ...

  4. 贪心算法之找硬币问题

    贪心算法之找硬币问题 题目: 假设有面值为5元.2元.1元.5角.2角.1角(折半查找排序)的货币,需要找给顾客4元6角现金,为使付出的货币的数量最少,如何付款? 贪心算法的思想: 只根据当前的信息就 ...

  5. Java实现 蓝桥杯 算法训练 找零钱

    试题 算法训练 找零钱 问题描述 有n个人正在饭堂排队买海北鸡饭.每份海北鸡饭要25元.奇怪的是,每个人手里只有一张钞票(每张钞票的面值为25.50.100元),而且饭堂阿姨一开始没有任何零钱.请问饭 ...

  6. python换零钱_黄哥Python, 贪心算法解决换零钱问题

    下面的文字来源于维基百科 贪心算法(英语:greedy algorithm) 又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法.比如 ...

  7. 【java】【贪心算法】换零钱问题

    package 换零钱; /*** @author naru* 编写时间: 2021年3月10日* 类名:零钱问题* 题目描述:整钱换零钱问题.输入给定的钱数(double型),输出最少的人民币支出形 ...

  8. html网页代码实现找零钱,算法训练 找零钱

    资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 有n个人正在饭堂排队买海北鸡饭.每份海北鸡饭要25元.奇怪的是,每个人手里只有一张钞票(每张钞票的面值为25.50.100元),而 ...

  9. 【算法分析与设计】实验 动态规划算法解决找零钱问题

    问题描述 设有 n n n种不同面值的硬币,各硬币的面值存于数组 T [ 1 : n ] T[1:n] T[1

最新文章

  1. micropython mqtt_MicroPython使用MQTT协议接入OneNET云平台
  2. ps怎么把一个颜色替换成另一个颜色_图标设计,用PS制作一款小清新的拟物时钟...
  3. 周伯文对话斯坦福教授曼宁:人机对话智能新进展需要新“图灵测试”
  4. 论网站更新与seo优化的关系
  5. VMware Identity Manager 与CAS, Keycloak的集成
  6. linux下centos安装mysql数据库_Linux CentOS 下的MySQL数据库安装与配置-阿里云开发者社区...
  7. canvas 在线画图
  8. mysql 单机双实列_{ mysql } MySQL单机多实例及主从复制
  9. Spark Streaming的工作机制
  10. Cookie、Session、Token、JWT分别是什么(一)
  11. android 悬浮按钮 功能实现,Android自定义悬浮按钮效果实现,带移动效果
  12. 验证手机号码的JS方法
  13. 规则绝对公平时,社会财富的流向谁?
  14. 【路径规划】基于matlab多种算法无人机路径规划【含Matlab源码 1263期】
  15. 多功能网页刷新助手(刷PV)
  16. 在Linux上下载arduino
  17. 《电路》邱关源 思维导图 第四章-电路定理
  18. Redis学习之hget命令
  19. pdf转换器电脑版免费,好用的办公操作软件集合
  20. diy 服务器 支持 esxi,【我的技术我做主】IT屌丝DIY ESXI虚拟化服务器再度升级ESXI6.0...

热门文章

  1. Kubernetes之Job
  2. 行人重识别(reid)近期最优最简模型的训练测试
  3. 在android上模拟ios阴影效果
  4. [时间序列分析][4]--AR模型,MA模型,ARMA模型介绍
  5. 2021寒假——洛谷刷题计划(35题)
  6. python中else的作用_享学课堂谈python中else的用途
  7. 一文读懂阿里云挑战 AWS 的底气 | 2018•大复盘
  8. C 语言 宏定义 :字符串化 stringify 的应用
  9. Conmi的正确答案——树莓派更新缓慢解决方案
  10. Appium简介与原理