回 帖 发 新 帖 刷新版面

主题:100元人民币换成1,2,5,10,50元的兑换方法

如题,求解,带说明最好

回复列表 (共4个回复)

沙发


CLS
LET a = 1: b = 2: c = 5: d = 10: e = 50
f = a + b + c + d + e
g = 100 - f
FOR x = 0 TO 32
FOR y = 0 TO 16
FOR z = 0 TO 6
FOR o = 0 TO 3
IF (x * 1) + (y * 2) + (z * 5) + (o * 10) + f = 100 THEN PRINT x, y, z, o, f
NEXT o, z, y, x 

板凳

你的程序需要循环9000多次,效率太低。
50元最多换i1张(i1=2),10元最多换i2张(i2=(100-i1*50)\10),5元最多换i3张(i3=(100-i1*50-i2*10)\5),以此类推。
程序:
CLS
PRINT 1, 2, 5, 10, 50: PRINT : PRINT
FOR i1 = 0 TO 2
    s1 = i1 * 50
    FOR i2 = 0 TO (100 - s1) \ 10
        s1 = i1 * 50 + i2 * 10
        FOR i3 = 0 TO (100 - s1) \ 5
            s1 = i1 * 50 + i2 * 10 + i3 * 5
            FOR i4 = 0 TO (100 - s1) \ 2
                s1 = i1 * 50 + i2 * 10 + i3 * 5 + i4 * 2
                i5 = 100 - s1
                PRINT i5, i4, i3, i2, i1
NEXT i4, i3, i2, i1
END
总共循环2498次。

3 楼

这个题目我以前遇到过,有一个原则就是“取大优先”

比如287元,

它大于100,就先减去100,100的标记上加1
187大于100,就减去100,100的标记上加1
87小于100,但大于50,就减去50,50的标记上加1
37小于50,但大于10,就减去10,10的标记上加1
.....

100,50,10,5,2,1以这个顺序标记

呵呵,好象跑题了

4 楼

人家楼主的题目并不要求所有的组合,你们整出几千个方案做什么???

我来回复

您尚未登录,请登录后再回复。点此登录或注册