import java.util.Scanner;
/*
* 假设有 1 元,3 元,5 元的硬币若干(无限),现在需要凑出 11 元,问如何组合才能使硬币的数量最少?
*/
public class GetLeastNum {
public int getLeastNum(int[] array,int n){
int lens=array.length;
if(array==null||lens==0||n<0)
return 0;
int[] dp=new int[n+1];
for(int i=0;i<n+1;i++)
dp[i]=0;
for(int i=1;i<n+1;i++){
int min=999999;
for(int j=0;j<lens;j++){
if(i-array[j]>=0){
int temp=dp[i-array[j]]+1;
if(temp<min)
min=temp;
}
}
dp[i]=min;
}
return dp[n];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
GetLeastNum gl=new GetLeastNum();
int[] array={1,3,5};
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int min_count=gl.getLeastNum(array, n);
System.out.println(min_count);
}
}
动态规划-最少硬币组合问题
最新推荐文章于 2022-02-28 20:36:00 发布