问题描述

给定需要找钱的数目,按照目前持有的零钱数对目标钱数进行找零,使得恰好满足目标钱数且找零所用的钱币数最少。

题目分析

这是湖南大学线上OJ的一道题目,总体不难,就是一道贪心算法的题。我们既然要选择最少的钱币数,那一定就要多换面值大的钱币,这样就可以满足要求了。
根据题目我们知道:

1 penny = 1块钱
1 nickle = 5块钱
1 dime = 10块钱
1 quarter = 25块钱 

于是我们就可以写一个递归函数,计算目标钱数可以兑换多少不同面值的钱币,而这些钱币的面值应该从大到小(贪心选择)。
其次这里面还有一个问题,也是我在做题的时候一直困扰我的。就是什么时候算输入结束呢?我们可以看到题中并没有要求我们输入固定的次数,也没有告诉我们输入什么字符会结束输入,这就是我在做题的时候最头疼的,就感觉这种问题模糊不清,连输入的限定都没有明确。
后来才知道,对于文件或者是在终端的输入,遇到Ctrl+Z就是输入停止了,在文件中如果文件到了结束位就停止了。
我们应该如何捕获这一状态呢?可以利用scanf函数,如果scanf()==EOF就表示输入停止了。

代码

#include <iostream>
using namespace std;
void change(int& money,int value,int number,int &N)
{int temp=money/value;if(temp<=number)//数量足够{N=temp;money-=temp*value;}else //数量不够{N=number;money-=number*value;}
}
int main()
{int money,pennies,nickels,dimes,quarters;int penniesN,nickelsN,dimesN,quartersN;//在文件中当文件结束时scanf的输入妇返回-1//在终端中输入ctrl+z表示输入结束,返回EOFwhile(scanf("%d %d %d %d %d",&money,&pennies,&nickels,&dimes,&quarters)!=EOF){//从最大面值开始递归change(money,25,quarters,quartersN);change(money,10,dimes,dimesN);change(money,5,nickels,nickelsN);change(money,1,pennies,penniesN);if(money==0)printf("%d %d %d %d\n",penniesN,nickelsN,dimesN,quartersN);else printf("Not enough change\n");}return 0;
}

总结

题目不难,贪心算法算是一种很简单的算法,在这里就不证明贪心选择性质和最优子结构性质了,具有生活常识的人都懂。我觉得最难不过是捕获输入的终止条件,我们通过while循环不断输入钱币数目和目标钱币,直到我们按下了Ctrl+Z,就结束了程序。

湖大ACM10155——Making change相关推荐

  1. 湖大深大A级学科数超南开,华科文科胜过武大!泰晤士的首份高校评级结果,让人有点方...

    白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 高考,出分了. 而英国知名第三方机构泰晤士,也赶趟提供了一份热腾腾的大学报考指南: 中国高校学科评级. 按照中国学科分类标准,来看看各个高 ...

  2. 计算机专业跨专业考文科,给07年想跨专业考湖大计算机专业的同学

    见到很多非计算机的同学想考湖南大学计算机专业,而湖大又出台了许多鼓励跨专业的政策,所以我还是想给各位想考湖大计算机的同学一些建议(因为本人在湖大计算机读了4年,已06考取计算机应用专业研究生). 首先 ...

  3. 一般别人去湖大找门,我都笑得半死

    2019独角兽企业重金招聘Python工程师标准>>> 大东哥22011-10-21 09:48:45你是没是一直在找,湖大在哪凯啊 杰2011-10-21 09:57:16在找门. ...

  4. 19湖大考研经验总结

    考研的一年多时间很快就过去了,现在也通过了学校的复试,成为了准研究生一枚,想记录一下这段时间的想法和经验. 关于联系导师的问题,可参考 如何选择研究生导师 . 初试 我大概是18年3月初开始准备的考研 ...

  5. 粉丝经历!湖大毕业工作2年,成功拿下字节跳动后端研发岗offer!

    前言 首先在这里介绍一下这位大佬,他是之前就在看我博客的一个算是粉丝吧,自己是湖大毕业的,自己在学校里面就经常趁着假期去找各种实习的事,非常好学的一个人,平时有什么不懂的就来问我,我也很乐意解答,他是 ...

  6. 中南大学计算机系可以蹭课吗,在中南、师大上湖大的课,985/211就是会玩!

    原标题:在中南.师大上湖大的课,985/211就是会玩! "金字塔是外星人建造并能使尸体永不腐烂吗?'百慕大魔鬼三角'吞噬了多少飞机和轮船?'尼斯湖怪'是不是恐龙的后代?--"这是 ...

  7. 计算机系 礼物,湖大19个学院毕业礼物聚齐了,全都是用心爱你的模样!

    原标题:湖大19个学院毕业礼物聚齐了,全都是用心爱你的模样! 这几天,毕业生开始返校 学院为了欢迎孩子们回家 提前策划,精心准备了 充满创意的毕业礼物 太暖心,一起来看看吧 楚才学院 楚才学院为每个毕 ...

  8. 推免面试经历 | 南理+湖大+浙大+华工+南航+吉大+中南+重大

    9月疯狂投了一堆学校预推免.下面讲一些进入复试的学校. 南京理工大学 当时想着要是实在没有985就读,就去211强校吧.所以我投了南理CS学硕,这也是我第一个面试的学校.当时是微信一位导师面,首先是一 ...

  9. CSDN湖大高校俱乐部活动的吐槽

    路过运动场的时候发现有CSDN高校俱乐部的活动海报,作为一个CSDN的资深潜水员,我当然义无反顾的全程参与了这次活动. 整个活动历时1个半小时,虽然和我一开始的期望还是差了一些,但总体来说,活动举办的 ...

最新文章

  1. iOS开发-自动隐藏键盘及状态栏
  2. python post form data_python实现发送form-data数据的方法详解
  3. javaSE---一个小项目(ATM机)
  4. 单片机ADC采样算法----限幅滤波法
  5. python中popitem_什么是python popitem函数?示例解析
  6. 【hdu1556】Color the ball——树状数组
  7. flash cs4 无法调试
  8. Sketch 55 for mac(矢量绘图软件) v55.2中文永久激活版
  9. 从30天到17小时,如何让HSPICE仿真效率提升42倍?
  10. Ignite学习日志1——入门example
  11. Java实现简易图形编辑系统
  12. Python编程实战:寻找回文
  13. 什么情况下使用$set?
  14. 元宇宙如何改写人类社会生活
  15. 健壮的网络编程IO函数-RIO包
  16. 1027 打印沙漏 (20分)
  17. AI打王者、星际争霸……你还不懂背后技术?这有一份游戏AI综述
  18. C#TextBox控件实现数据绑定的方法
  19. EXCEL中一列(行)转多行多列或多行多列转一列(行)
  20. UVa 10849 - Move the bishop

热门文章

  1. 2020-12-15
  2. Macwk 挂了?替代的Mac软件下载网站来了
  3. SEED LABS初入
  4. 【ASE入门学习】ASE入门系列——序章
  5. 在Vue里使用G2地图制作省级地图展示各市级数据
  6. 第三方登录 QQ登录(一) 申请接口
  7. STM32RTC简单万年历制作
  8. 【第十篇】- Git 远程仓库(Github)之Spring Cloud直播商城 b2b2c电子商务技术总结
  9. Mysql中的七种常用查询连接详解
  10. 同一个页面显示多个html界面,浏览器怎么设置在同一个界面/窗口打开多个网页...