3-2 最少硬币问题
问题描述
设有n种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。对任意钱数0≤m≤20001,设计一个用最少硬币找钱m的方法。
对于给定的1≤n≤10,硬币面值数组T和可以使用的各种面值的硬币个数数组Coins,以及钱数m,0≤m≤20001,编程计算找钱m的最少硬币数。
深度优先搜索遍历法(DFS)
Java
public class ZuiShaoYingBi {
//case 1
private static int n = 3;
private static int[] T = {
1, 2, 5};
private static int[] coins = {
3, 3, 3};
//case 2
// private static int n = 3;
// private static int[] T = {19, 20, 50};
// private static int[] coins = {3, 3, 3};
//case 3
// private static int n = 4;
// private static int[] T = {1, 2, 5, 18};
// private static int[] coins = {3, 3, 3, 1};
//case 4
// private static int n = 4;
// private static int[] T = {1, 2, 5, 18};
// private static int[] coins = {3, 3, 3, 0};
private static int m = 18;
// private static int m = 19;
// private static int m = 20;
// private static int m = 21;
// private static int m = 22;
// private static int m = 23;
// private static int m = 24;
// private static int m = 25;
// private static int m = 0;
// private static int m = 1;
private static int coinsCount = Integer.M