Exemplo n.º 1
0
 private static void backtracking(Stack<Movimento> movimentos, Tabuleiro tabuleiro) {
   if (eSol(tabuleiro)) {
     imprimirTab(tabuleiro.obterEstado());
     processarSol(movimentos);
   } else {
     Queue<Movimento> cand = gerarCand(tabuleiro);
     while (!cand.isEmpty()) {
       Movimento mv = cand.poll();
       movimentos.push(mv);
       tabuleiro.aplicarMov(mv);
       backtracking(movimentos, tabuleiro);
       tabuleiro.desaplicarMov(mv);
       movimentos.pop();
     }
   }
 }
Exemplo n.º 2
0
  public static void main(String[] args) {

    backtracking(new Stack(), Tabuleiro.obterInstancia());
  }
Exemplo n.º 3
0
 private static Queue<Movimento> gerarCand(Tabuleiro tabuleiro) {
   Queue<Movimento> cand = tabuleiro.movimentosPossiveis();
   return cand;
 }
Exemplo n.º 4
0
 private static boolean eSol(Tabuleiro tabuleiro) {
   return tabuleiro.contarUns() == 1;
 }