zoukankan      html  css  js  c++  java
  • 322. Coin Change

        /*
         * 322. Coin Change
         * 2016-7-6 by Mingyang
         * 这道题目的思路是一个一维的dp,自己想出来了,从后往前倒着推,比如有5,2,1三种选择
         * 那么从最后一个往前推就是dp[n-5],dp[n-2],dp[n-1]的最小值再加1
         * 不过有些细节方面需要注意一下,首先我所有的dp都设为0是不对的,因为比如coin是2,我是3
         * 找不到的时候我还是会用dp[1]+1这么就错了,所以网上用了INF来表示没有
         * 那么在dp过程中,在我比coin大,而且那个我减去coin剩下的可以成功换钱的情况下,我再递进
         */
          public int coinChange(int[] coins, int amount) {
                int dp[] = new int[amount + 1];
                final int INF = 0x7ffffffe;
                for (int i = 1; i <= amount; i++) dp[i] = INF;
                dp[0]=0;
                for (int i = 1; i <= amount; i++) {
                    for (int j = 0; j < coins.length; j++) {
                         if(coins[j]<=i&&dp[i-coins[j]]!=INF)
                            dp[i]=Math.min(dp[i],dp[i-coins[j]]+1);
                    }
                }
                return dp[amount] == INF ? -1 : dp[amount];
            }    
  • 相关阅读:
    JAVA-类加载机制(2)-类加载的过程
    JAVA-类加载机制(1)-生命周期
    StarUML-详解
    JMS-mq-发布/订阅
    JMS-mq-点对点
    Spring-Transcation
    Session-Hibernate
    Session
    Git配置
    Maven配置
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5649512.html
Copyright © 2011-2022 走看看