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

  • 相关阅读:
    Linux快捷键、文件管理和查询
    Netty
    微软认知服务实现语音识别功能
    基础实用算法
    机器学习十大常用算法
    微服务之Swagger
    Quartz 入门详解 专题
    MyBatis(2):config.xml文件
    深入SpringBoot:自定义Endpoint
    快速掌握Flyway
  • 原文地址:https://www.cnblogs.com/lz87/p/7288757.html
Copyright © 2011-2022 走看看