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

换钱的最少货币数

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

 /**
     * 动态规划推到公式:
     * dp[n]=min(dp[n-coin]+1), coin in coins
     *
     * @param arr
     * @param aim
     * @return
     */
    public static int minMoney(int[] arr, int aim) {
        // write code here
        int[] dp = new int[aim + 1];
        for (int value : arr) {
            dp[value] = 1;
        }

        for (int i = 1; i < dp.length; i++) {
            if (dp[i] == 0) {
                dp[i] = Integer.MAX_VALUE;
            }
            for (int value : arr) {
                if (i - value > 0 && dp[i - value] != Integer.MAX_VALUE) {
                    dp[i] = Math.min(dp[i], dp[i - value] + 1);
                }
            }
        }
        return dp[aim] == Integer.MAX_VALUE ? -1 : dp[aim];
    }
算法 文章被收录于专栏

数据结构和算法

全部评论

相关推荐

02-05 08:18
四川大学 Java
在思考的熊熊很讨厌吃香菜:不是,我门头沟学院呢?这都没排上?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务