@@ -0,0 +1,1184 @@
+package de.sebhn.algorithm.excercise3_3;%0D%0A%0D%0Aimport java.math.BigInteger;%0D%0Aimport java.util.HashMap;%0D%0A%0D%0Apublic class fibonacci %7B%0D%0A  static int betrag%5B%5D = %7B1, 3, 7, 31, 47%7D;%0D%0A  static int n = betrag.length; // Anzahl Muenzen%0D%0A%0D%0A  static long w%5B%5D%5B%5D; // Tabelle%0D%0A%0D%0A  public static void main(String%5B%5D args) %7B%0D%0A    for (int i = 0; i %3C 37; i++) %7B%0D%0A      int g = F(i).intValue(); // g lesen%0D%0A      w = new long%5Bg + 1%5D%5Bn%5D; // w dimensionieren%0D%0A      System.out.println(%0D%0A          %22Den Betrag %22 + g + %22 kann man auf %22 + w(g, n - 1) + %22 verschiedene Arten wecheln.%22);%0D%0A    %7D%0D%0A  %7D%0D%0A%0D%0A  static HashMap%3CInteger, BigInteger%3E F = new HashMap%3C%3E(); // dynamic table%0D%0A%0D%0A  public static BigInteger F(int n) %7B // method%0D%0A    if (n %3C= 1) %7B%0D%0A      return BigInteger.valueOf(n);%0D%0A    %7D // base case%0D%0A    BigInteger m = F.get(n); // lookup%0D%0A    if (m != null)%0D%0A      return m; // sucessful%0D%0A    m = F(n - 1).add(F(n - 2)); // recursion%0D%0A    F.put(n, m); // store%0D%0A    return m; // finish%0D%0A  %7D%0D%0A%0D%0A%0D%0A  static long w(int g, int i) %7B // Methode%0D%0A    return g %3C 0 ? 0%0D%0A        : i == 0 ? (g %25 betrag%5B0%5D == 0 ? 1 : 0)%0D%0A            : w%5Bg%5D%5Bi%5D != 0 ? w%5Bg%5D%5Bi%5D : (w%5Bg%5D%5Bi%5D = w(g, i - 1) + w(g - betrag%5Bi%5D, i));%0D%0A  %7D%0D%0A%7D%0D%0A

add main class