Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- /**
- * @author StanHebben
- */
- public class RecipeCalculator {
- public static void calculate(int[] coins, CallBack callback) {
- for (int i : coins) {
- int[] value = new int[9];
- calculate(i, coins, i, 0, value, callback);
- }
- }
- private static void calculate(int value, int[] coins, int remaining, int d, int[] denomination, CallBack callback) {
- //System.out.println("Calculate " + remaining + " " + d);
- if (remaining > 0) {
- if (d == 9) return;
- for (int i : coins) {
- if (i <= remaining && (d == 0 || i <= denomination[d - 1])) {
- denomination[d] = i;
- calculate(value, coins, remaining - i, d + 1, denomination, callback);
- }
- }
- } else if (d > 1) {
- callback.recipe(value, denomination, d);
- }
- }
- public static interface CallBack {
- public void recipe(int value, int[] denomination, int size);
- }
- public static void main(String[] args) {
- calculate(new int[] { 1, 2, 5, 10, 25 }, new CallBack() {
- @Override
- public void recipe(int value, int[] denomination, int size) {
- System.out.println(value + " = " + Arrays.toString(Arrays.copyOf(denomination, size)));
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement