Advertisement
StanHebben

Coin denominations

Jan 29th, 2014
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. import java.util.Arrays;
  2.  
  3. /**
  4. * @author StanHebben
  5. */
  6. public class RecipeCalculator {
  7. public static void calculate(int[] coins, CallBack callback) {
  8. for (int i : coins) {
  9. int[] value = new int[9];
  10. calculate(i, coins, i, 0, value, callback);
  11. }
  12. }
  13.  
  14. private static void calculate(int value, int[] coins, int remaining, int d, int[] denomination, CallBack callback) {
  15. //System.out.println("Calculate " + remaining + " " + d);
  16. if (remaining > 0) {
  17. if (d == 9) return;
  18. for (int i : coins) {
  19. if (i <= remaining && (d == 0 || i <= denomination[d - 1])) {
  20. denomination[d] = i;
  21. calculate(value, coins, remaining - i, d + 1, denomination, callback);
  22. }
  23. }
  24. } else if (d > 1) {
  25. callback.recipe(value, denomination, d);
  26. }
  27. }
  28.  
  29. public static interface CallBack {
  30. public void recipe(int value, int[] denomination, int size);
  31. }
  32.  
  33. public static void main(String[] args) {
  34. calculate(new int[] { 1, 2, 5, 10, 25 }, new CallBack() {
  35. @Override
  36. public void recipe(int value, int[] denomination, int size) {
  37. System.out.println(value + " = " + Arrays.toString(Arrays.copyOf(denomination, size)));
  38. }
  39. });
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement