首页 > 其他 > 详细

[Coding Made Simple] Coin Changes Number of ways to get a total

时间:2017-08-18 14:05:40      阅读:329      评论:0      收藏:0      [点我收藏+]

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

[Coding Made Simple] Coin Changes Number of ways to get a total

原文:http://www.cnblogs.com/lz87/p/7288757.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!