题解 | #换钱的最少货币数#

换钱的最少货币数

http://www.nowcoder.com/practice/3911a20b3f8743058214ceaa099eeb45

经典完全背包问题

  • 首先确定背包的遍历顺序直接从外层遍历是物品,里面遍历背包
  • 注意是完全背包,一阶dp数组要正向遍历
  • 最后注意边界问题
    ``` java
    import java.util.*;
    public class Solution {
    public int minMoney (int[] arr, int aim){
          int  []dp=new int[aim+1];
          Arrays.fill(dp,aim+1);// 初始化最大值的时候直接选取
          int n=arr.length;
          dp[0]=0;//初始状态
        for(int a:arr){
              for(int   j=1;j<=aim;j++){
                    if(j>=a){
                         dp[j]=Math.min(dp[j], dp[j - a] + 1);
                    }
              }
        }
         return    dp[aim]==aim+1?-1:dp[aim];
    }
    }
全部评论

相关推荐

谦虚的布莱克选钝角:华为呢,那个很热情的
点赞 评论 收藏
分享
06-19 12:33
安徽大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务