Advertisement
nux95

currency permutation - java - TUM homework

Jan 13th, 2014
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.05 KB | None | 0 0
  1.     /**
  2.      * Counts the number of possibilities to get a total value of exactly {@code max} using
  3.      * only the values given in {@code remainingCoins}.
  4.      * @param sum the accumulated value
  5.      * @param max the maximum value
  6.      * @param remainingCoins a list of coins
  7.      * @return the number of possibilities
  8.      */
  9.     static int numPossibilities(int sum, int max, List<Integer> remainingCoins) {
  10.         /* Implementation
  11.          * Copyright (c) 2014  Niklas Rosenstein
  12.          *
  13.          * Permission is hereby granted, free of charge, to any person obtaining a copy
  14.          * of this software and associated documentation files (the "Software"), to deal
  15.          * in the Software without restriction, including without limitation the rights
  16.          * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  17.          * copies of the Software, and to permit persons to whom the Software is
  18.          * furnished to do so, subject to the following conditions:
  19.          *
  20.          * The above copyright notice and this permission notice shall be included in
  21.          * all copies or substantial portions of the Software.
  22.          *
  23.          * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  24.          * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  25.          * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  26.          * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  27.          * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  28.          * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  29.          * THE SOFTWARE. */
  30.  
  31.         if (sum > max)
  32.             return 0;
  33.         else if (sum == max)
  34.             return 1;
  35.  
  36.         int result = 0;
  37.         List<Integer> current = remainingCoins;
  38.         while (current != null) {
  39.             result += numPossibilities(sum + current.head, max, current);
  40.             current = current.tail;
  41.         }
  42.  
  43.         return result;
  44.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement