zoukankan      html  css  js  c++  java
  • [Coding Made Simple] Coin Changes Number of ways to get a total

    Given coins of certain denominations and a total, how many ways these coins can be combined to get the total.

    Dynamic Programming solution 

    State: T[i][j]: given the first i coins, the total number of ways these coins can be combined to get the total j.

    Function: T[i][j] = T[i - 1][j] + T[i][j - coins[i - 1]],  if j >= coins[i - 1];

         T[i][j] = T[i - 1][j], if j < coins[i - 1];

    Initialization:

    if the total is 0, then T[i][0] = 1,i is from 0 to coins.length;  the only way is to not select any coins;

    if there is no coins to select from, then T[0][j] = 0, j is from 1 to total, as there is 0 way to get a non zero total if we have no coins to select from;

    Answer: T[coins.length][total]; 

     1 public class CoinChange {
     2     public int minCoinsToGetTotal(int[] coins, int total) {
     3         if(total == 0) {
     4             return 1;
     5         }
     6         if(total != 0 && (coins == null || coins.length == 0)) {
     7             return 0;
     8         }
     9         int[][] T = new int[coins.length + 1][total + 1];
    10         for(int j = 0; j < T[0].length; j++) {
    11             T[0][j] = 0;
    12         }
    13         for(int i = 0; i < T.length; i++) {
    14             T[i][0] = 1;
    15         }
    16         for(int i = 1; i < T.length; i++) {
    17             for(int j = 1; j < T[0].length; j++) {
    18                 if(j >= coins[i - 1]) {
    19                     T[i][j] = T[i - 1][j] + T[i][j - coins[i - 1]];
    20                 }
    21                 else {
    22                     T[i][j] = T[i - 1][j];
    23                 }
    24             }
    25         }
    26         return T[coins.length][total];
    27     }
    28 }

    Related Problems 

    Coin Changes Minimum Number of Coins

  • 相关阅读:
    基于PyQt4.QtWebKit的浏览器模拟类
    Unit Testing Struts 2 Actions wired with Spring using JUnit
    formExtractor: 在QtWebkit的javascript访问QObject的例子
    更改terminal下显示的主机名称
    访问ssh不用密码
    WebKit in Qt
    QtWebKit based Web Browser
    测试Action
    struts2+mybatis+spring框架整合
    礼品卡
  • 原文地址:https://www.cnblogs.com/lz87/p/7288757.html
Copyright © 2011-2022 走看看