Optimización del algoritmo de seguimiento genérico para N Queens

Para mi solucionador de problemas de N Queens, actualmente estoy usando backtracking y estoy alcanzando un promedio de 7 ms en tiempo de ejecución. Sin embargo, estoy buscando optimizar aún más mi retroceso para que tenga una mejor complejidad de tiempo.

 public boolean solveQueen( int col) { 
         if(col == qColumn) {
             solveQueen(col +1);
         }
         if(col >= board.length) {  
             printBoard();
             System.out.println();
             return true; 

         }

         for(int i = 0; i < board.length; i++)

             if(notUnderAttack(i,col)) 
             {

                 placeQ(i,col);
                 solveQueen(col +1);

                 removeQ(i, col);  


             }

         return false;         
     }

As well from what I read, N queens backtracking has a time complexity of O(N!) but with my backtracking, I'm skipping a column since I'm placing a queen down first so shouldn't it be O(N!-1)?

Will appreciate any feedback that comes my way ^^

Answer:1

I am having an issue with comparing the properties of myProduct.setRefno(product.getRefno()), imported from another class along with a description, price and qty. I need to be able to key in a refno ...

Entonces, hay un sitio web que tiene un formulario de inicio de sesión. Quiero iniciar sesión y luego descargar un archivo. Al enviar el formulario, no solo se transmiten el nombre de usuario y la contraseña en la POST http, sino también un token ...

Estoy agregando una imagen en el encabezado de un documento de Word. Muestra un marco para la imagen y dice "la imagen no se puede mostrar actualmente". Si agrego texto al encabezado, muestra el texto, y si agrego el ...

Me gustaría hacer esto (reproducción mínima): String key = "foo"; Valor del objeto = nueva barra (); if (target instanceof Map <?,?>) {Map <?,?> map = (Map <?,?>) target; map.put (clave, valor) ...