C++贪心算法求解找零钱问题(很形象)
贪心算法求解找零钱问题
1.什么是贪心算法?
贪心算法是一种策略,总是做出在当前看来是最好的选择,总结出来几个字:寻找最优解
举个例子来说就是:“有一个只能往前走的果园,里边有各种水果让你免费摘,免费摘嘛当然找值钱的摘,所以一开始你就直接选择最贵的石榴,石榴摘完后再摘哪个?看看前边有香蕉和葡萄,比较了一下摘了香蕉,香蕉过后继续往前走,然后摘了橘子……,最后一条路走下来了,你摘了石榴、香蕉、橘子、苹果、桃子,总价值为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++贪心算法求解找零钱问题(很形象)相关推荐
- 贪心算法解决找零钱问题
4.1 找零问题 问题描述: 设有50.20.10.5.1.0.5.0.1等面额的零钱,顾 客购物花了n元,在支付(n / 100 + 1) * 100元后,收银员应如何找 零,才能使找回的钱数最少. ...
- 贪心算法1——找零钱问题
贪心算法是一种不追求最优解,只希望找到较为满意解的方法.贪心算法省去了为找最优解要穷尽所有可能而必须耗费的大量时间,因此它一般可以快速得到比较满意的解. 贪心算法常以当前情况做最优选择,而不考虑各种可 ...
- c语言贪心算法零钱问题,贪心算法(2)——找零钱问题
一.找零钱问题 例题1: 有 1 元,5元,10元,20元,100元,200元的钞票无穷多张.现在使用这些钞票支付X元,最少需要多少张钞票. X = 628 最佳支付方法: 3张200块的,1张20块 ...
- 基于贪心算法求解TSP问题(JAVA)
前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 详细 代码下载:http://www.demod ...
- tsp java_基于贪心算法求解TSP问题(JAVA)
前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 一.TPS问题 TSP问题(Travelling ...
- 贪心算法求解 TSP 旅行商问题及其实现
文章目录 一.TSP 概述 1. TSP 2. 数学模型 3. TSP分类 二.贪心算法 1. 算法思路 2. 算法框架 3. 问题 三.贪心算法求解 TSP 一.TSP 概述 1. TSP 旅行商问 ...
- 贪心算法求解一个序列中出现次数最多的元素问题
贪心算法求解一个序列中出现次数最多的元素问题 题目: 指定n个正整数,编写一个实验程序找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入描述:输入的第1行只有一个正整数n(1 ...
- 贪心算法 背包问题 java_贪心算法求解背包问题
一.贪心算法 1.贪心算法概念 贪婪算法(Greedy algorithm)是一种对某些求最优解问题的更简单.更迅速的设计技术.用贪婪法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测 ...
- 贪心算法求解TSP问题(python)
这里使用贪心算法求解TSP问题的python版本 # dist 为距离矩阵,start_index 为起始位置 def tsp_quick(dist: list, start_index: int): ...
最新文章
- ARM:钒和铁替代固氮酶的前世今生
- 【Flask】Jinja2模板之过滤器
- Mac OS 怎么设置host
- android给数组添加新元素_重磅!超详细的 JS 数组方法整理出来了
- java 线程加载类_java JVM-线程上下类加载器
- java的内存管理_操作系统实验——java内存管理
- 头的各个部位示意图_图解圆锥破碎机润滑油路,7个主要润滑部位特点分析
- python解释器调用_Python3.x那些事儿:[2]如何调用解释器-百度经验
- php 判断是否在指定时间段范围内
- 对linux安装中文字体库
- php中case的使用,php:switchcase语句的使用案例
- 深信服售前产品经理校招面试总结(一面)
- 【 第一章:初识 ts】
- DS二叉树—二叉树构建与遍历(不含框架)
- 解密回声消除技术之二(应用篇)
- 计算机网络管理员模拟,计算机网络管理员(三级)技能模拟测试
- 数学建模计算机配置,数学建模资源配置问题.doc
- 楼宇自控BACnet/IP协议网关功能特点
- LC117 Populating Next Right Pointers in Each Node II
- 企业该怎么建立大数据平台?
热门文章
- php处理并发不如java_今天听人说 php 运算能力不比 java
- 物联计算机大赛,江南大学物联网学院在“第三届中国高校计算机大赛-团体程序设计天体赛”喜获佳绩...
- iOS后台运行机制1
- 微信小程序 wux-filterbar动态更新分类
- 2021年 Java 面试题集锦 -- 持续更新
- 小米人体感应器触发,随机播放网易云音乐
- 计算机专业难不难,计算机专业考研难不难
- Drools规则引擎之常用语法
- 简单平台用户信息管理系统
- 【SAP Abap】X-DOC:SE10 - SAP 传输请求 副本传输请求的应用