算法_数学问题_Question11_换分币(java实现)

这篇文章讲述的是算法初级部分的换分币问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。

问题描述

将5元的人民币换成1元、5角、和1角的硬币,共多少种不同的兑换方法。

算法分析

假设可以兑换1元硬币oneYuan个,5角硬币fiveJiao个,1角硬币oneJiao个
则满足以下条件:
oneYuan*10+fiveJiao*5+oneJiao*1=50 (统一计算单位为分)
确定取值范围:
oneYuan:0~5
fiveJiao:0~10
oneJiao:0~50
使用两层for循环穷举出每一种情况并判断那种满足即可

代码实现

package mathematics;

public class Q11_ExchangeOfCurrency {
    /**
     * 问题描述:将5元的人民币换成1元、5角、和1角的硬币,共多少种不同的兑换方法。
     * 
     * 算法分析:假设可以兑换1元硬币oneYuan个,5角硬币fiveJiao个,1角硬币oneJiao个
     *          则满足以下条件:
     *                      oneYuan*10+fiveJiao*5+oneJiao*1=50 (统一计算单位为分)
     *          确定取值范围:
     *                      oneYuan:0~5
     *                      fiveJiao:0~10
     *                      oneJiao:0~50
     *          使用两层for循环穷举出每一种情况并判断那种满足即可
     */
    public static void main(String[] args) {
        /*初始化1元,5角,1角个数*/
        int oneYuan , fiveJiao , oneJiao ;
        int num = 0 ;
        System.out.println("满足情况的结果有:");
        /*穷举每一种情况*/
        for(oneYuan=0 ; oneYuan<=5 ;oneYuan++)
            for(fiveJiao=0 ; fiveJiao<=(50-oneYuan*10)/5 ; fiveJiao++){
                oneJiao = 50-oneYuan*10-fiveJiao*5 ;
                /*判定是否满足条件*/
                if(oneYuan*10+fiveJiao*5+oneJiao*1==50){
                    /*输出满足条件的结果*/
                    System.out.printf("一元:%-2d 五角:%-2d 一角:%-2d ",oneYuan,fiveJiao,oneJiao);
                    num++ ;
                    if(num%5==0)
                        System.out.println();
                }
            }
        System.out.println();
        System.out.println("共"+num+"种");
    }
}

样例输出

满足情况的结果有:
一元:0  五角:0  一角:50 一元:0  五角:1  一角:45 一元:0  五角:2  一角:40 一元:0  五角:3  一角:35 一元:0  五角:4  一角:30 
一元:0  五角:5  一角:25 一元:0  五角:6  一角:20 一元:0  五角:7  一角:15 一元:0  五角:8  一角:10 一元:0  五角:9  一角:5  
一元:0  五角:10 一角:0  一元:1  五角:0  一角:40 一元:1  五角:1  一角:35 一元:1  五角:2  一角:30 一元:1  五角:3  一角:25 
一元:1  五角:4  一角:20 一元:1  五角:5  一角:15 一元:1  五角:6  一角:10 一元:1  五角:7  一角:5  一元:1  五角:8  一角:0  
一元:2  五角:0  一角:30 一元:2  五角:1  一角:25 一元:2  五角:2  一角:20 一元:2  五角:3  一角:15 一元:2  五角:4  一角:10 
一元:2  五角:5  一角:5  一元:2  五角:6  一角:0  一元:3  五角:0  一角:20 一元:3  五角:1  一角:15 一元:3  五角:2  一角:10 
一元:3  五角:3  一角:5  一元:3  五角:4  一角:0  一元:4  五角:0  一角:10 一元:4  五角:1  一角:5  一元:4  五角:2  一角:0  
一元:5  五角:0  一角:0  
共36种
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值