Cómic: ¿Cuál es el problema de las ocho reinas?

Cómic: ¿Cuál es el problema de las ocho reinas?

Haga clic en el "Programador Xiaohui" arriba y seleccione la "Cuenta oficial superior". ¡
Los artículos interesantes y significativos se entregarán lo antes posible!

Cómic: ¿Cuál es el problema de las ocho reinas?

Cómic: ¿Cuál es el problema de las ocho reinas?

----- el día siguiente-----
Cómic: ¿Cuál es el problema de las ocho reinas?

Cómic: ¿Cuál es el problema de las ocho reinas?

Cómic: ¿Cuál es el problema de las ocho reinas?

¿Qué significa el título?

La reina en el ajedrez puede moverse horizontal, vertical y diagonalmente. ¿Cómo colocar 8 reinas en un tablero de ajedrez de 8 x 8 para que no haya dos reinas en la misma dirección horizontal, vertical o diagonal?

Tomemos una castaña. La cuadrícula verde en la siguiente imagen es el "área bloqueada" de una reina en el tablero de ajedrez. Otras reinas no se pueden colocar en estas cuadrículas:
Cómic: ¿Cuál es el problema de las ocho reinas?

Las cuadrículas verdes en la imagen de abajo son los "bloqueos" de las dos reinas en el tablero de ajedrez. Otras reinas no se pueden colocar en estas cuadrículas:

Cómic: ¿Cuál es el problema de las ocho reinas?

Entonces, ¿cómo seguir las reglas y colocar estas 8 reinas al mismo tiempo? Echemos un vistazo a la respuesta de Xiao Hui.

Cómic: ¿Cuál es el problema de las ocho reinas?
Cómic: ¿Cuál es el problema de las ocho reinas?

————————————
Cómic: ¿Cuál es el problema de las ocho reinas?

Cómic: ¿Cuál es el problema de las ocho reinas?
Cómic: ¿Cuál es el problema de las ocho reinas?
Cómic: ¿Cuál es el problema de las ocho reinas?

¿Cuál es el problema de las ocho reinas?

El problema de las ocho reinas es un problema antiguo. Fue propuesto por un jugador de ajedrez en 1848: coloque ocho reinas en un tablero de ajedrez de 8 × 8 para que no puedan follarse entre sí, es decir, dos reinas No puede estar en la misma fila, la misma columna o la misma línea diagonal, ¿cómo resolverlo?

Muchos matemáticos representados por Gauss han estudiado este problema sucesivamente. Más tarde, cuando aparecieron las computadoras, este problema pudo resolverse fácilmente mediante el cálculo de programas informáticos.

Cómic: ¿Cuál es el problema de las ocho reinas?
Cómic: ¿Cuál es el problema de las ocho reinas?

¿Cómo resolver el problema de las ocho reinas?

El llamado retroceso recursivo es esencialmente un método de enumeración. Este método comienza desde la primera línea del tablero e intenta colocar la primera reina. Después de que la colocación sea exitosa, recursivamente un nivel y luego siga las reglas para colocar la segunda reina en la segunda línea del tablero. Si no se puede colocar la posición actual, mueva un cuadrado a la derecha y vuelva a intentarlo. Si la colocación es exitosa, continúe recursivamente un nivel y coloque la tercera reina ...

Si una determinada capa ha visto todas las cuadrículas y no se puede colocar correctamente, regrese a la reina anterior, mueva la reina anterior una cuadrícula hacia la derecha y luego repita. Si las ocho reinas están todas colocadas y cumplen con las reglas, entonces se ha obtenido una de las soluciones correctas.

Es un poco abstracto, echemos un vistazo al proceso detallado de retroceso recursivo.

1. El primer nivel de recursividad, intenta colocar la primera reina en la primera línea:
Cómic: ¿Cuál es el problema de las ocho reinas?

2. El segundo nivel de recursividad, trate de colocar la segunda reina en la segunda fila (las dos primeras cuadrículas están bloqueadas por la primera reina y solo pueden caer en la tercera cuadrícula):
Cómic: ¿Cuál es el problema de las ocho reinas?

3. El tercer nivel de recursividad, intenta colocar la tercera reina en la tercera fila (las primeras cuatro cuadrículas están bloqueadas por la primera y la segunda reinas, y solo pueden caer en la quinta cuadrícula):
Cómic: ¿Cuál es el problema de las ocho reinas?

4. El cuarto nivel de recursividad, intente colocar la cuarta reina en la cuarta fila (la primera cuadrícula está bloqueada por la segunda reina y solo puede caer en la segunda cuadrícula):
Cómic: ¿Cuál es el problema de las ocho reinas?

5. El quinto nivel de recursividad, intenta colocar la quinta reina en la quinta fila (las tres primeras cuadrículas están bloqueadas por las reinas anteriores y solo pueden caer en la cuarta cuadrícula):

Cómic: ¿Cuál es el problema de las ocho reinas?

6. Dado que todos los cuadrados son "verdes", no hay forma de colocar la reina en la sexta fila, así que retrocediendo, vuelva a colocar la quinta reina en el octavo cuadrado. :
Cómic: ¿Cuál es el problema de las ocho reinas?

7. Todavía no hay forma de colocar la reina en la sexta fila, y la quinta fila ha sido probada muchas veces, así que volví a la cuarta fila y reubiqué la cuarta reina en la séptima cuadrícula. :
Cómic: ¿Cuál es el problema de las ocho reinas?

8. Continúe colocando la quinta reina, y así sucesivamente ...
Cómic: ¿Cuál es el problema de las ocho reinas?

Cómic: ¿Cuál es el problema de las ocho reinas?

¿Implementación del código del problema de las ocho reinas?

La resolución del problema de las ocho reinas se puede dividir en dos niveles:
1. Encontrar el primer método de colocación correcto, que es el recorrido en profundidad primero.
2. Descubra todos los métodos de colocación correctos, que es el primer recorrido en amplitud.

Debido a la prioridad del espacio, solo presentamos cómo encontrar la primera ubicación correcta en este artículo.

Al estudiar la implementación de código, necesitamos resolver varios problemas:

1. ¿Cómo se representa el tablero de ajedrez?
Es muy simple, se puede representar mediante una matriz bidimensional con una longitud de 8.
Cómic: ¿Cuál es el problema de las ocho reinas?

Dado que la matriz int se usa aquí, el valor inicial de int es 0, lo que significa que no hay movimiento. Cuando se coloca una reina, el valor del elemento correspondiente se cambia a 1.

Aquí, la primera dimensión de la matriz bidimensional representa la abscisa, la segunda dimensión representa la ordenada y comienza desde 0. Por ejemplo, tablero de ajedrez [3] [4] representa el estado de la cuadrícula en la cuarta fila y la quinta columna del tablero de ajedrez.

2. ¿Cómo juzgar si el punto de aterrizaje de la reina cumple con los requisitos?
Defina un método de control, pase en la posición de la nueva reina y juzgue si hay otras reinas en las direcciones vertical y diagonal.
Cómic: ¿Cuál es el problema de las ocho reinas?

3. ¿Cómo realizar un retroceso recursivo?
El retroceso recursivo es el núcleo de este algoritmo, y la lógica del código es algo complicada
Cómic: ¿Cuál es el problema de las ocho reinas?

4. ¿Cómo generar los resultados?
Este problema es muy simple, simplemente atraviese la matriz bidimensional y envíela directamente.
Cómic: ¿Cuál es el problema de las ocho reinas?

5. ¿Cómo encadenar estos métodos?
Se llama en tres pasos en la función principal: el
primer paso: inicialización, el
segundo paso: la colocación recursiva de la reina, el
tercer paso: la salida final.

Queen8 es el nombre de toda la clase.
Cómic: ¿Cuál es el problema de las ocho reinas?

El resultado final es el siguiente:

10000000
00001000
00000001
00000100
00100000
00000010
01000000
00010000
Cómic: ¿Cuál es el problema de las ocho reinas?

Cómic: ¿Cuál es el problema de las ocho reinas?

Algunas adiciones:

1. Por razones de espacio, este artículo solo habla sobre cómo encontrar la primera ubicación correcta de las ocho reinas. Si está interesado, puede realizar ligeros cambios en el código del artículo para conocer todos los códigos colocados por las ocho reinas.

2. Esta caricatura es puro entretenimiento, aprecia tu trabajo actual tanto como sea posible y no imites el comportamiento de Xiao Hui.

-----FIN-----

Cómic: ¿Cuál es el problema de las ocho reinas?

Amigos a los que les gusta este artículo, mantengan presionada la imagen para seguir al programador de cuentas de suscripción Xiaohui y ver más contenido emocionante.
Cómic: ¿Cuál es el problema de las ocho reinas?

Supongo que te gusta

Origin blog.51cto.com/14982143/2550773
Recomendado
Clasificación