首页 > 代码库 > 换硬币

换硬币

换硬币

设有n种不同的硬币,各个硬币的面值存在数组w[i]中,现在要用这些硬币来找钱,可以使用各种面值的硬币的个数存于数组s[i]中,设计一个用最少硬币找钱的m的方法。

package 换硬币;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Scanner;public class Main {    public static void main(String[] args) {        //给出硬币的面值及个数        int count =0;        int w[] = new int[5];        int s[] = new int[5];        Scanner input = new Scanner(System.in);        System.out.println("请输入n:");        int n = input.nextInt();        for(int i=0;i<n;i++)        {            System.out.println("输入面值:");            w[i] = input.nextInt();            System.out.println("输入数量:");            s[i] = input.nextInt();                    }                //把已经有的硬币按照从大到小的顺序存到a1中。        List a1 = new ArrayList();        for(int i=0;i<n;i++)        {            for(int j = 0;j<s[i];j++)            {                a1.add(w[i]+"");            }        }                System.out.println("输入钱数:");        int money = input.nextInt();                //换钱        //a2负责存储找的钱        List a2 = new ArrayList();        for(int i=0;i<a1.size();i++)//循环取钱        {            if(money >= Integer.parseInt((String)a1.get(i)))            {                a2.add(a1.get(i));//存入到换钱的数列中                money = money- Integer.parseInt((String)a1.get(i));                count++;            }        }                                                        //输出结果                System.out.println("至少要用:"+count+"枚,用法如下:");        int c[] = new int[n];        for(int i=0;i<n;i++)//按照硬币种类统计使用的次数        {            c[i] = Collections.frequency(a2, w[i]+"");            System.out.println("面值"+w[i]+":"+c[i]+"枚");        }                    }}

 

换硬币