Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.math.BigInteger;
- import java.util.HashMap;
- public class ex5_3
- {
- private static int n = 100;
- private static HashMap<Integer, HashMap<Integer, BigInteger>> map = new HashMap<>();
- private static int[] results = new int[] { 1, 1, 4 };
- public static void main(String[] args)
- {
- if(args.length > 0)
- {
- try
- {
- n = Integer.parseInt(args[0]);
- }
- catch(Exception e)
- {
- n = 12;
- System.out.println(("YOU ARE JUST WRONG, DUDE! ")
- + (klammer(0,0).longValue() - 0x4561));
- }
- }
- if(n < 3)
- {
- System.out.println("Count for n = " + n + ": " + results[n]);
- }
- else
- {
- System.out.println("Count for n = " + n + ": " + klammer(0, 0).multiply((BigInteger.valueOf(2))).multiply(BigInteger.valueOf(3).pow((n - 2))));
- }
- }
- public static BigInteger klammer(int i, int opn)
- {
- if(i == n * 2)
- {
- return opn == 0 ? BigInteger.ONE : BigInteger.ZERO;
- }
- HashMap<Integer, BigInteger> hib = map.get(opn);
- BigInteger bi = hib == null ? null : hib.get(i);
- if(bi != null)
- {
- return bi;
- }
- else
- {
- BigInteger ret = BigInteger.ZERO;
- if (i - opn >= 0)
- {
- ret = ret.add(klammer(i + 1, opn + 1));
- }
- if (opn > 0)
- {
- ret = ret.add(klammer(i + 1, opn - 1));
- }
- hib = map.get(opn);
- if(hib != null)
- {
- hib.put(i, ret);
- }
- else
- {
- hib = new HashMap<>();
- hib.put(i, ret);
- map.put(opn, hib);
- }
- return ret;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement