Acc

El problema de las ocho reinas Recursión de C ++

Eight Queens Problem C Recursion

Recientemente, estaba revisando la recursividad y preparándome para una nueva prueba. Acabo de ver el problema de las ocho reinas.

La idea principal es dibujar un tablero de ajedrez de 8 * 8, la posición de la reina se puede establecer en 0, de lo contrario es 1. Debido a que la solución correcta debe ser una reina en cada fila, el problema se descompone mediante la búsqueda en profundidad de la fila primero. Coloque la reina de (0,0), busque el primer 0 en la siguiente línea, coloque la reina, establezca las posiciones no colocables correspondientes en 1, y luego busque el primer 0 en la siguiente línea ... encontrar el primer 0 en la séptima línea (desde el primer comienzo en la línea 0) Si todavía hay 0 disponible para poner la reina, la solución se encuentra de lo contrario, vuelva a la línea anterior, restaure el tablero de ajedrez, busque el segundo 0 en el línea para colocar la reina y continuar buscando hacia abajo. Después de múltiples devoluciones, todos los ceros en la línea también son Después de completar la búsqueda, regrese a la línea anterior para búsquedas similares.



Los problemas encontrados son principalmente en dos aspectos:



1. Bucle para realizar la operación de colocación de la escuadra correspondiente por parte de la reina. Preste atención a las condiciones del circuito y considere 4 situaciones.



2. Lógica de bucle en recursividad. Consulte los comentarios del código.

Además, dado que se da la posición inicial de la recursividad (0,0), es necesario recorrer la función principal para lograr una solución recursiva para todas las posiciones en la fila 0. Este punto también se examinó durante mucho tiempo, solo para descubrirlo contando el número de capas recursivas.

|_+_|
92 soluciones resueltas