mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-07 01:35:16 +08:00
Add tests, remove main
& print
methods in CoinChange.java
(#5642)
This commit is contained in:
@ -786,6 +786,7 @@
|
|||||||
* [BruteForceKnapsackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsackTest.java)
|
* [BruteForceKnapsackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsackTest.java)
|
||||||
* [CatalanNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java)
|
* [CatalanNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java)
|
||||||
* [ClimbStairsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/ClimbStairsTest.java)
|
* [ClimbStairsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/ClimbStairsTest.java)
|
||||||
|
* [CoinChangeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CoinChangeTest.java)
|
||||||
* [CountFriendsPairingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CountFriendsPairingTest.java)
|
* [CountFriendsPairingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/CountFriendsPairingTest.java)
|
||||||
* [EditDistanceTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EditDistanceTest.java)
|
* [EditDistanceTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EditDistanceTest.java)
|
||||||
* [EggDroppingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EggDroppingTest.java)
|
* [EggDroppingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/EggDroppingTest.java)
|
||||||
|
@ -7,15 +7,6 @@ public final class CoinChange {
|
|||||||
private CoinChange() {
|
private CoinChange() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Driver Program
|
|
||||||
public static void main(String[] args) {
|
|
||||||
int amount = 12;
|
|
||||||
int[] coins = {2, 4, 5};
|
|
||||||
|
|
||||||
System.out.println("Number of combinations of getting change for " + amount + " is: " + change(coins, amount));
|
|
||||||
System.out.println("Minimum number of coins required for amount :" + amount + " is: " + minimumCoins(coins, amount));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method finds the number of combinations of getting change for a
|
* This method finds the number of combinations of getting change for a
|
||||||
* given amount and change coins
|
* given amount and change coins
|
||||||
@ -32,8 +23,6 @@ public final class CoinChange {
|
|||||||
for (int i = coin; i < amount + 1; i++) {
|
for (int i = coin; i < amount + 1; i++) {
|
||||||
combinations[i] += combinations[i - coin];
|
combinations[i] += combinations[i - coin];
|
||||||
}
|
}
|
||||||
// Uncomment the below line to see the state of combinations for each coin
|
|
||||||
// printAmount(combinations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return combinations[amount];
|
return combinations[amount];
|
||||||
@ -65,16 +54,7 @@ public final class CoinChange {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Uncomment the below line to see the state of combinations for each coin
|
|
||||||
// printAmount(minimumCoins);
|
|
||||||
return minimumCoins[amount];
|
return minimumCoins[amount];
|
||||||
}
|
}
|
||||||
|
|
||||||
// A basic print method which prints all the contents of the array
|
|
||||||
public static void printAmount(int[] arr) {
|
|
||||||
for (int i = 0; i < arr.length; i++) {
|
|
||||||
System.out.print(arr[i] + " ");
|
|
||||||
}
|
|
||||||
System.out.println();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,80 @@
|
|||||||
|
package com.thealgorithms.dynamicprogramming;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class CoinChangeTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangeBasic() {
|
||||||
|
int amount = 12;
|
||||||
|
int[] coins = {2, 4, 5};
|
||||||
|
|
||||||
|
assertEquals(5, CoinChange.change(coins, amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangeNoCoins() {
|
||||||
|
int amount = 12;
|
||||||
|
int[] coins = {};
|
||||||
|
|
||||||
|
assertEquals(0, CoinChange.change(coins, amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangeNoAmount() {
|
||||||
|
int amount = 0;
|
||||||
|
int[] coins = {2, 4, 5};
|
||||||
|
|
||||||
|
assertEquals(1, CoinChange.change(coins, amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testChangeImpossibleAmount() {
|
||||||
|
int amount = 3;
|
||||||
|
int[] coins = {2, 4, 5};
|
||||||
|
|
||||||
|
assertEquals(0, CoinChange.change(coins, amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMinimumCoinsBasic() {
|
||||||
|
int amount = 12;
|
||||||
|
int[] coins = {2, 4, 5};
|
||||||
|
|
||||||
|
assertEquals(3, CoinChange.minimumCoins(coins, amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMinimumCoinsNoCoins() {
|
||||||
|
int amount = 12;
|
||||||
|
int[] coins = {};
|
||||||
|
|
||||||
|
assertEquals(Integer.MAX_VALUE, CoinChange.minimumCoins(coins, amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMinimumCoinsNoAmount() {
|
||||||
|
int amount = 0;
|
||||||
|
int[] coins = {2, 4, 5};
|
||||||
|
|
||||||
|
assertEquals(0, CoinChange.minimumCoins(coins, amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMinimumCoinsImpossibleAmount() {
|
||||||
|
int amount = 3;
|
||||||
|
int[] coins = {2, 4, 5};
|
||||||
|
|
||||||
|
assertEquals(Integer.MAX_VALUE, CoinChange.minimumCoins(coins, amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMinimumCoinsExactAmount() {
|
||||||
|
int amount = 10;
|
||||||
|
int[] coins = {1, 5, 10};
|
||||||
|
|
||||||
|
assertEquals(1, CoinChange.minimumCoins(coins, amount));
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user