Advertisement
Guest User

Untitled

a guest
May 1st, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.97 KB | None | 0 0
  1. import java.math.BigInteger;
  2. import java.util.HashMap;
  3.  
  4. public class ex5_3
  5. {
  6.     private static int n = 100;
  7.     private static HashMap<Integer, HashMap<Integer, BigInteger>> map = new HashMap<>();
  8.     private static int[] results = new int[] { 1, 1, 4 };
  9.  
  10.     public static void main(String[] args)
  11.     {
  12.         if(args.length > 0)
  13.         {
  14.             try
  15.             {
  16.                 n = Integer.parseInt(args[0]);
  17.             }
  18.             catch(Exception e)
  19.             {
  20.                 n = 12;
  21.                 System.out.println(("YOU ARE JUST WRONG, DUDE! ")
  22.                         + (klammer(0,0).longValue() - 0x4561));
  23.             }
  24.         }
  25.  
  26.         if(n < 3)
  27.         {
  28.             System.out.println("Count for n = " + n + ": " + results[n]);
  29.         }
  30.         else
  31.         {
  32.             System.out.println("Count for n = " + n + ": " + klammer(0, 0).multiply((BigInteger.valueOf(2))).multiply(BigInteger.valueOf(3).pow((n - 2))));
  33.         }
  34.     }
  35.  
  36.     public static BigInteger klammer(int i, int opn)
  37.     {
  38.         if(i == n * 2)
  39.         {
  40.             return opn == 0 ? BigInteger.ONE : BigInteger.ZERO;
  41.         }
  42.  
  43.         HashMap<Integer, BigInteger> hib = map.get(opn);
  44.         BigInteger bi = hib == null ? null : hib.get(i);
  45.  
  46.         if(bi != null)
  47.         {
  48.             return bi;
  49.         }
  50.         else
  51.         {
  52.             BigInteger ret = BigInteger.ZERO;
  53.  
  54.             if (i - opn >= 0)
  55.             {
  56.                 ret = ret.add(klammer(i + 1, opn + 1));
  57.             }
  58.  
  59.             if (opn > 0)
  60.             {
  61.                 ret = ret.add(klammer(i + 1, opn - 1));
  62.             }
  63.  
  64.             hib = map.get(opn);
  65.  
  66.             if(hib != null)
  67.             {
  68.                 hib.put(i, ret);
  69.             }
  70.             else
  71.             {
  72.                 hib = new HashMap<>();
  73.                 hib.put(i, ret);
  74.                 map.put(opn, hib);
  75.             }
  76.  
  77.             return ret;
  78.         }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement