美文网首页
硬币问题

硬币问题

作者: nafoahnaw | 来源:发表于2018-06-12 17:29 被阅读0次
    /**
     * 有1,5,10,50,100,500元的硬币各C1,C5,C10,C50,C100,C500枚
     * 现在要用这些硬币来支付A元,最少需要多少枚硬币?
     * 假定本题至少存在一种解决方案
     * 思路,贪心算法
     * @author haofan.whf
     * @version $Id: Coin.java, v 0.1 2018年06月12日 下午5:13 haofan.whf Exp $
     */
    public class Coin {
    
        public void solution(int A, int C1, int C5, int C10, int C50, int C100, int C500){
            int nc500 = 0;
            if(A / 500 > 0){
                nc500 = A / 500 > C500 ? C500 : A / 500;
                System.out.println("需要500元硬币" + nc500 + "枚");
                A = A - nc500 * 500;
            }
            int nc100 = 0;
            if(A / 100 > 0){
                nc100 = A / 100 > C100 ? C100 : A / 100;
                System.out.println("需要100元硬币" + nc100 + "枚");
                A = A - nc100 * 100;
            }
            int nc50 = 0;
            if(A / 50 > 0){
                nc50 = A / 50 > C50 ? C50 : A / 50;
                System.out.println("需要50元硬币" + nc50 + "枚");
                A = A - nc50 * 50;
            }
            int nc10 = 0;
            if(A / 10 > 0){
                nc10 = A / 10 > C10 ? C10 : A / 10;
                System.out.println("需要10元硬币" + nc10 + "枚");
                A = A - nc10 * 10;
            }
            int nc5 = 0;
            if(A / 5 > 0){
                nc5 = A / 5 > C5 ? C5 : A / 5;
                System.out.println("需要5元硬币" + nc5 + "枚");
                A = A - nc5 * 5;
            }
            int nc1 = A;
            System.out.println("需要1元硬币" + nc1 + "枚");
            System.out.println("共需要硬币" + (nc1 + nc5 + nc10 + nc50 + nc100 + nc500) + "枚");
        }
    
    }
    

    相关文章

      网友评论

          本文标题:硬币问题

          本文链接:https://www.haomeiwen.com/subject/oqsreftx.html