假设给你 总额为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]);
}
}