zoukankan      html  css  js  c++  java
  • 最少钱币数:

    最少钱币数

    【问题描述】

    这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑 15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。

    你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。

    要求

    数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1 <= M <= 2000,整数),接着的一行中,第一个整数K(1 <= K <= 10)表示币种个数,随后是K个互不相同的钱币面值Ki(1 <= Ki <= 1000)。

    代码实现:

    public class MinCoins {
    
    /*
     * 给定一个数额,用最少的钱币数额组合形成
     */
        public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入该钱币的数额:");
        int sum=sc.nextInt();//钱币数额
        int coinnum[]={100,50,20,10,5,2,1};//币值所有的面额
        int num[]=new int[7];//存储每张面额的数量
        int mincoin=0;
        for(int i=0,resum=sum;i<num.length;i++){
            num[i]=resum/coinnum[i];
            resum=resum-(num[i]*coinnum[i]);
            mincoin+=num[i];
        }
        String s=sum+"=";
        for(int j=0;j<coinnum.length;j++){
            if(num[j]>0){
                s=s+(coinnum[j]+"*"+num[j]+"+");
            }
        }
        //表示从0到s的最后一位之间的字符串
        s = s.substring(0, s.lastIndexOf("+"));   
        System.out.println("纸币组合:"+s);  
        System.out.println("最少的张数:"+mincoin);  
        }
    }
  • 相关阅读:
    SpringBoot入门
    VUE 监听局部滚动 设置ICON的位置跟随
    手机端页面调试工具-vconsole使用
    js获取字符串字节的位数
    判断数据为[] {} /空数组或空对象
    Vue axios 上传图片
    Vue触发input选取文件点击事件
    腾讯地图添加多个Marker
    VUE-CLI 设置页面title
    小程序wxml文件引用方式
  • 原文地址:https://www.cnblogs.com/java-7/p/7162048.html
Copyright © 2011-2022 走看看