在第2个的基础上稍微优化了点,减少了递归次数
package test;
public class CoinToSum3 {
private static final int[] COINS = new int[] { 1, 2, 5, 10, 20, 50 };
private static int count = 0;
public static void main(String[] args) throws Exception {
System.out.println(System.currentTimeMillis());
calc(100, 5, "");
System.out.println("totally " + count + " solutions. ");
System.out.println(System.currentTimeMillis());// 50ms
}
private static void calc(int sum, int coinIdex, String pre) {
if (sum <= 0) {
if (sum == 0) {
count++;
}
}
for (int i = coinIdex; i >= 0; i--) {
if (sum >= 0) {
calc(sum - COINS[i], i, pre + " " + COINS[i]);
}
}
}
}
这个消耗时间大概在50ms,比第2个在性能上提升了近1倍,不过二者的原理是一样的。
分享到:
相关推荐
标题中的“确定将一定数量的钱比如100,换成1,2,5,10,20,50元的组合问题(4)”是指一个经典的动态规划问题,也被称为“找零问题”。在这个问题中,我们需要找出用特定面额的硬币(1元、2元、5元、10元、20元和...
标题中的“确定将一定数量的钱比如100,换成1,2,5,10,20,50元的组合问题(2)”是指一个经典的动态规划问题,也被称为“找零问题”或者“硬币找零问题”。在这个问题中,目标是找到使用特定面值的硬币(1元,2...
- 同样的,通过练习,学生学习了如何用不同数量的1元、2元、5元等面额的货币来组合成12元、15元、110元、120元、150元等不同的总金额。 4. **实际支付问题**: - 练习题中涉及到实际购买物品的情景,如一个台灯65...
- 如:1张10元可以换成10张1元,或者5张2元,或者2张5元。 3. **比较人民币的大小** - 在比较人民币数值大小时,遵循数值比较的基本规则,比如50分等于5角,1元大于9角,7元大于7角等。 4. **人民币的找零计算**...
10元可以换成1张5元和2张2元,1张10元可以换成2张5元等。 5. **人民币的实际应用** - 在人民币应用室部分,涉及到实际的消费问题,如比较价格差异,计算购买数量,找零等。比如,如果转笔刀比文具盒便宜,需要计算...
- 探讨10元如何转换成不同数量的1元和2元,例如10元可以是5张2元,也可以是10张1元。 10. **实际应用**: - 除了基本的数学计算,题目还引导学生解决实际的购物问题,例如找回零钱、确定购买物品的总金额等。 ...
3. **填一填**:这部分主要是让学生理解面额和数量的关系,如2张5元是10元,1张20元可以换2张10元等。同时,也涉及到了乘法和加法的概念,如在2+2+2+2+2中,相同加数是2,相同加数的个数是5,可以写作5×2。 4. **...
换算关系中,例如1元可以换成10张1角的纸币,或者是100张1分的硬币。此外,学生还要学会理解和运用更复杂的换算关系,如3元等于30角,1元6角等于16角等。 读写钱数也是学生学习的重要内容。学生要学会正确地读出和...
排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的方法数,而组合是只考虑元素的选取,而不考虑选取后的顺序。在例4中,各种特殊情况下的排列数计算展示了排列和组合的应用。例如,当甲乙必须...
- 问题(1)要求将45000000000元转换成"亿元",即除以1亿,结果是450亿元。 - 问题(2)中69998000人省略万后面的尾数,就是四舍五入到万位,约为7000万人。 2. 单位换算: - 问题(2)涉及吨与千克、平方米与公顷的...
在计算机领域,组合数学可以帮助解决许多优化问题,比如图论中的问题、编码理论、数据结构的设计等。 在本PPT中,我们将重点讨论组合数学在解决实际问题中的应用,尤其是"单色三角形问题"。这个问题的设定是:在...
小机灵可以将第1个满杯的水倒入第3个空杯,这样第1个杯就变为空杯,第3个杯变为满杯,原来的第2个满杯还是满的,现在变成了第2个杯是满杯,第1个杯是空杯,第3个杯是满杯,满足条件。 3. 枪战决斗问题:这是一个...
- **费波那契数列**:费波那契数列是一种经典的数列,定义为:F(0)=0, F(1)=1, 对于所有的n≥1, 有F(n)=F(n-1)+F(n-2)。这个数列在自然界和艺术中都有广泛的应用,如植物生长模式、音乐节奏等。 - **有趣的走路问题*...
这类电路由基本逻辑门(如与门、或门、非门等)组合而成,没有存储或反馈机制。每一个输出变量可以看作是输入变量的一个函数,例如L1=f1 (A1, A2, ..., Ai),其中f1是逻辑函数,L1是输出,A1, A2, ..., Ai是输入。 ...
例如,将3张1元、2张5角和5张1角组合起来,就是3元5角。通过这种组合拆分的训练,孩子们可以更加灵活地处理现实中的支付问题。 除了组合拆分,学会最简便的支付方式也是重要的生活技能。在购物时,合理选择支付方式...
例如,一张1元可以换成两张5角,也可以换成一张5角和五张1角,或者是十张1角和两张5角。这些转换不仅加深了孩子们对货币的理解,也锻炼了他们的逻辑思维能力。 最后,课件通过实际的应用问题,将前面学到的知识点...
1. **算法设计**:确定如何将一个数制的数字转换到另一个数制,包括逻辑步骤和数据结构的使用。 2. **代码实现**:根据设计的算法编写清晰、高效的代码,注意避免冗余和提高可读性。 3. **测试用例**:设计各种测试...
例如,面对280×50这样的乘法,我们不必直接计算每个数字的乘积,而是可以先忽略0,将280乘以5,得到1400,然后再将结果后加上一个0,因为有一个因数是100(即280中的0和50中的0组合),所以最终结果是14000。...
13. **数列问题**:观察数列,1=5(5的0次方),2=15(5的1次方+5的0次方),3=215(5的2次方+5的1次方),4=2145(5的3次方+5的2次方+5的1次方),所以5=5的4次方+5的3次方+5的2次方+5的1次方+5的0次方。 14. **电影院购票...