五年级硬币问题试解。 |
送交者: 粱远声 2012年05月22日22:23:34 于 [灵机一动] 发送悄悄话 |
硬币有1分, 5分, 10分, 25分四种.
问有多少种不同的方法可以凑成 2 元. 例如: 方法一: 200个1分 方法二: 195个1分, 1个5分. ... 解 在这些组合中,1分的个数只能以5的倍数出现。把每5分看成一点,2元共有 40点。 25分的硬币是5点。2元中,25分硬币不同的个数为0,1,2,3,4,5,6,7, 8。对于加进所有不同个数的25分硬币,所剩的点数为(排成列) 40 35 30 25 20 15 10 5 0 对所剩的不同的点数,加进不同个数的10分硬币(2点),所剩的点数为(排成行) 40,38,36,... 2, 0 35, 33, 31, ... 3, 1 30, ...... 25, ...... 20, ...... 15, ...... 10, 8, 6, 4, 2, 0 5, 3, 1 0 上述所剩的点数是为5分和1分的硬币准备的。如果所剩的点数是k,5分(1点)的 不同组合是0点,1点,2点,... k点 余下的点数由1分硬币补齐(5个补1点)。 这样,对所剩的点数k,就有k+1个不同的组合。 也就是说,上述所剩的点数阵列中的每个数加1,再把所有数加起来就是问题的 答案。 算法(以下除法均为整数除法): n = 40/5 + 1 s = 0 for ( i = 0; i < n; i++ ) { m = i * 5 r = m % 2 s = s + (m + 2 + r)(m/2+1)/2 } s 就是凑成2元不同组合的个数。 |
|
|
|
实用资讯 | |