给定一组硬币数,找出一组最少的硬币数,来找换零钱N。
如何减小时间复杂度:不用全局变量来保存计算过的值,也不用递归的方法来实现,用一个一维数组,再用循环来实现
import java.util.Scanner;
public class cionMinNum {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int money = scan.nextInt();
if(money == 0) {
System.out.println(0);
return;
}
int[] coin = new int[]{1,2,5};
int[] f = new int[money + 1];
f[0] = 0;
for(int i = 1 ;i <= money; ++i){
f[i] = Integer.MAX_VALUE;
for(int j = 0 ; j < coin.length; ++j){
if(i - coin[j] >= 0){
f[i] = Integer.min(f[i - coin[j]] + 1,f[i]);
}
}
}
System.out.println(f[money]);
}
}