假设给你 总额为11元,硬币种类为 1,3,5.
求最小的硬币数
递推公式为:d(i)=min{ d(i-vj)+1 } vj为面额 1,3,或者5
这个基本是最简单的动态规划算法,代码如下:
public class Dpcoins { public static void main(String[] args) { int coins[]= {1,3,5}; int money=11; int dp[]=new int[12]; dp[0]=0; for(int i=1;i<=money;i++) { dp[i]=i; } for(int i=1;i<=money;i++) { for(int j=0;j<coins.length;j++) { if(i>coins[j]&&(dp[i-coins[j]]+1)<dp[i]) { dp[i]=dp[i-coins[j]]+1; } } } System.out.println(dp[11]); } }