现有人民币:1元 2元 5元 10元 20元 50元 100元
要求用户输入金额X
计算出输入金额X最少需要多少张纸币组成。
这个题的金额没定,可以是任何数,我刚开始时想用if判断,但是金额只能在100内结果才是对的,超出100就不行了,
想了半天也想不出来,请各位高手指点一下,这个题的算法。
任何钱数都可以分解为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每个数的最少分法只有一种。
我在8楼那个方法写出来代码会比较长,(因为分情况讨论)
但是计算过程应该很简单