General

Hanoi Tower

private static final int NUM_PEGS = 3;
public static void computeTowerHanoi(int numRings){
  List<Deque<Integer>> pegs = new ArrayList<>();
  for(int i = 0; i < NUM_PEGS; i++){
    pegs.add(new LinkedList<Integer>)
  }
  for(int i = numRings; i > 0 ; i--){
    pegs.get(0).push(i);
  }

  helper(pegs, numRings, 0, 1, 2)
}

public static void helper(List<Deque<Integer>> pegs, int numRings, int pegFrom, int pegTo, int pegUse){
  if (numRings > 0){
    helper(pegs, numRings - 1, pegFrom, pegUse, pegTo);
    pegs.get(pegTo).push(pegs.get(pegFrom).pop());
    helper(pegs, numRings - 1, pegUse, pegTo, pegFrom);
  }
}

n-Queens

Last updated

Was this helpful?