| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 825 人关注过本帖
标题:求高手指点~!感激不尽~!
只看楼主 加入收藏
dongyongbo
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-3-20
收藏
 问题点数:0 回复次数:13 
求高手指点~!感激不尽~!

现有人民币:1元 2元 5元 10元 20元 50元 100元
要求用户输入金额X
计算出输入金额X最少需要多少张纸币组成。


这个题的金额没定,可以是任何数,我刚开始时想用if判断,但是金额只能在100内结果才是对的,超出100就不行了,
想了半天也想不出来,请各位高手指点一下,这个题的算法。

搜索更多相关主题的帖子: 感激不尽 
2007-03-28 12:22
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
先定义一个变量X=0;X为纸币的数量,从大的开始除,得到商和余,X+=商,余数再去除接下来的人民币.一直到1就可以了

雁无留踪之意,水无取影之心
2007-03-28 12:30
dongyongbo
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-3-20
收藏
得分:0 
如果是130,哪么就用130/100余30,再用30除多少呢?是除以小于30的数还是除以100啊?
2007-03-28 12:35
dongyongbo
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-3-20
收藏
得分:0 
回复:(xuxiong2)回复:(dongyongbo)求高手指点~!...
谢谢~!一个题发上去都没人去看,真郁闷~!
2007-03-28 13:52
蚂蚁啃骨头
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-3-14
收藏
得分:0 
以下是引用dongyongbo在2007-3-28 12:35:22的发言:
如果是130,哪么就用130/100余30,再用30除多少呢?是除以小于30的数还是除以100啊?

用余数去和100,50,20,10,5,2,1比
if实现.
if(n>1)
{
if(n>2)
{ k=n/2;
if(n>5)
{ k=n/5;
if(n>10)
{..................


人生就像没有BACK键的浏览器,一旦选择了一个链接,就无法再回头。
2007-03-28 15:59
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
以下是引用dongyongbo在2007-3-28 12:35:22的发言:
如果是130,哪么就用130/100余30,再用30除多少呢?是除以小于30的数还是除以100啊?

再去除50,接下来就是20.....


雁无留踪之意,水无取影之心
2007-03-28 16:02
yigedaizi
Rank: 1
等 级:新手上路
帖 子:123
专家分:0
注 册:2006-11-24
收藏
得分:0 
以下是引用蚂蚁啃骨头在2007-3-28 15:59:59的发言:

用余数去和100,50,20,10,5,2,1比
if实现.
if(n>1)
{
if(n>2)
{ k=n/2;
if(n>5)
{ k=n/5;
if(n>10)
{..................

不用比来比去,就一直除下去就了。


layman on C#
2007-03-28 18:09
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 

任何钱数都可以分解为M=100*x+10*y+z,这里x为任意非负整数,y,z是0~9的数
x是固定的,任何时候都不变,小于100为0;
y、z都只有10种情况,你可以分类计算:
(y,z的考虑方法相同,因为面值有1,2,5,也有10,20,50,只是10倍关系)
例如:y=0时,不用考虑
y=1,2,5时,必定分解为一张(前提是最少)
y=3,4,6,7时,最少两张
y=8,9时,最少三张
所以你拆出x,y,z,可以用以上方法直接得出结果
如果你需要输出分钱的过程,就可以在上面分类的时候直接取出,因为0~9每个数的最少分法只有一种。


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-28 18:34
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
得分:0 

我只想下面这个最笨的方法,如果用if语句总是不能很简洁,有高手可以写出来简洁的吗?

x1=n/100;
x2=(n%100)/50;
x3=((n%100)%50)/20;
x4=(((n%100)%50)%20)/10;
x5=((((n%100)%50)%20)%10)/5;
x6=(((((n%100)%50)%20)%10)%5)/2;
x7=(((((n%100)%50)%20)%10)%5)%2;

输出xi


Everything is gonna be okay!
2007-03-28 19:17
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 

我在8楼那个方法写出来代码会比较长,(因为分情况讨论)
但是计算过程应该很简单


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-28 19:21
快速回复:求高手指点~!感激不尽~!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023450 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved