贪心算法求解找零钱问题

1.什么是贪心算法?

  1. 贪心算法是一种策略,总是做出在当前看来是最好的选择,总结出来几个字:寻找最优解

  2. 举个例子来说就是:“有一个只能往前走的果园,里边有各种水果让你免费摘,免费摘嘛当然找值钱的摘,所以一开始你就直接选择最贵的石榴,石榴摘完后再摘哪个?看看前边有香蕉和葡萄,比较了一下摘了香蕉,香蕉过后继续往前走,然后摘了橘子……,最后一条路走下来了,你摘了石榴、香蕉、橘子、苹果、桃子,总价值为25元”,故事到此结束,当你抱着一堆25元钱水果回来的时候,你已经寻找到了最优解,贪心算法就是这样的一种策略,根据眼前的条件进行取舍去寻找最优解;

2.找零钱问题构思

找零钱当然要尽快把钱找给对方,怎么做到最快,就是先取最大的钞票,然后再逐渐用小钞票,打个比方,如果你要找我32块钱,那最快的方法就是从你钱包里取出三张10块的,两张1块的, 利用贪心算法就是先看看最大钞票够不够找零,够的话先用最大的钞票,再用小的钞票;

3.代码部分

说了这么多,还是来看代码理解的快些。

#include<iostream>
using namespace std;int main()
{int temp,num=0;       //temp为某种币值需要多少张钱,num为总共需要多少张int n=7;int moneylist[7] = { 5,1,2,3,2,4,1 };int moneyvalue[7] = { 1,2,5,10,20,50,100 };int k;      //要找的钱cout << "请输入要找的钱数" << endl;cin >> k;for (int i = 6; i >= 0; i--) {       //找零钱操作temp = k / moneyvalue[i];if (temp <= moneylist[i]) {num += temp;k -= temp * moneyvalue[i];cout << moneyvalue[i] << "元的钱" << temp << "张" << endl;}else {num += moneylist[i];k -= moneylist[i] * moneyvalue[i];cout << moneyvalue[i] << "元的钱" << moneylist[i] << "张" << endl;}if (k == 0) break;  }if (k != 0)  cout << "您还缺少" << k << "元去找零" << endl;if(k==0) cout << "一共至少需要" << num << "张纸币" << endl;return 0;
}

4. 运行结果


对于上边讲的摘水果问题想必你还有疑问,有没有一种路线使得自己拿的水果最值钱呢?有可能一开始选择最不值钱的桃子,接下来有可能会遇到榴莲、椰子等超级贵的水果,那么一路走下来摘的水果肯定比25元贵,所以如果有很多次机会去尝试的话,你肯定能找到一条最好的路线使拿到的水果最贵,至于这个过程,就是后续的推导整体最优解过程,这可能涉及回溯法等算法,有兴趣可以去了解一下。

今天就到这里,该吃饭了,拜。

C++贪心算法求解找零钱问题(很形象)相关推荐

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

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

  2. 贪心算法1——找零钱问题

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

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

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

  4. 基于贪心算法求解TSP问题(JAVA)

    前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 详细 代码下载:http://www.demod ...

  5. tsp java_基于贪心算法求解TSP问题(JAVA)

    前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 一.TPS问题 TSP问题(Travelling ...

  6. 贪心算法求解 TSP 旅行商问题及其实现

    文章目录 一.TSP 概述 1. TSP 2. 数学模型 3. TSP分类 二.贪心算法 1. 算法思路 2. 算法框架 3. 问题 三.贪心算法求解 TSP 一.TSP 概述 1. TSP 旅行商问 ...

  7. 贪心算法求解一个序列中出现次数最多的元素问题

    贪心算法求解一个序列中出现次数最多的元素问题 题目: 指定n个正整数,编写一个实验程序找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入描述:输入的第1行只有一个正整数n(1 ...

  8. 贪心算法 背包问题 java_贪心算法求解背包问题

    一.贪心算法 1.贪心算法概念 贪婪算法(Greedy algorithm)是一种对某些求最优解问题的更简单.更迅速的设计技术.用贪婪法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测 ...

  9. 贪心算法求解TSP问题(python)

    这里使用贪心算法求解TSP问题的python版本 # dist 为距离矩阵,start_index 为起始位置 def tsp_quick(dist: list, start_index: int): ...

最新文章

  1. ARM:钒和铁替代固氮酶的前世今生
  2. 【Flask】Jinja2模板之过滤器
  3. Mac OS 怎么设置host
  4. android给数组添加新元素_重磅!超详细的 JS 数组方法整理出来了
  5. java 线程加载类_java JVM-线程上下类加载器
  6. java的内存管理_操作系统实验——java内存管理
  7. 头的各个部位示意图_图解圆锥破碎机润滑油路,7个主要润滑部位特点分析
  8. python解释器调用_Python3.x那些事儿:[2]如何调用解释器-百度经验
  9. php 判断是否在指定时间段范围内
  10. 对linux安装中文字体库
  11. php中case的使用,php:switchcase语句的使用案例
  12. 深信服售前产品经理校招面试总结(一面)
  13. 【 第一章:初识 ts】
  14. DS二叉树—二叉树构建与遍历(不含框架)
  15. 解密回声消除技术之二(应用篇)
  16. 计算机网络管理员模拟,计算机网络管理员(三级)技能模拟测试
  17. 数学建模计算机配置,数学建模资源配置问题.doc
  18. 楼宇自控BACnet/IP协议网关功能特点
  19. LC117 Populating Next Right Pointers in Each Node II
  20. 企业该怎么建立大数据平台?

热门文章

  1. php处理并发不如java_今天听人说 php 运算能力不比 java
  2. 物联计算机大赛,江南大学物联网学院在“第三届中国高校计算机大赛-团体程序设计天体赛”喜获佳绩...
  3. iOS后台运行机制1
  4. 微信小程序 wux-filterbar动态更新分类
  5. 2021年 Java 面试题集锦 -- 持续更新
  6. 小米人体感应器触发,随机播放网易云音乐
  7. 计算机专业难不难,计算机专业考研难不难
  8. Drools规则引擎之常用语法
  9. 简单平台用户信息管理系统
  10. 【SAP Abap】X-DOC:SE10 - SAP 传输请求 副本传输请求的应用