Vous êtes sur la page 1sur 4

Andres Felipe Herrera Buitrago

Universidad Javeriana
Anlisis de Algoritmos

ALGORITMO Y DISEO - PROBLEMA DE LAS (N) REINAS

Problema
Determinar si es posible posicionar un numero N de reinas en un tablero normal de ajedrez
(8x8) sin que estas se amenacen.

Contexto
Un tablero normal de ajedrez se compone de una cuadricula de 8x8

La reina dentro del ajedrez puede moverse nicamente en lnea recta ya sea a travs de las columnas,
filas o diagonales del tablero, tal como lo muestra la ilustracin en la cual el punto rojo representa a la
reina y las lneas rojas representan los posibles movimientos de la reina

Se considera que una reina est amenazando a otra si esta est en la misma fila, columna o
diagonal que la otra.

Anlisis
Entradas: El algoritmo debe recibir un numero entero N positivo mayor a 0 indicando el
nmero de reinas de las cuales se quiere saber si es posible posicionarlas sobre el tablero sin
que se amenace
Salidas: El resultado de el algoritmo debe ser un mensaje afirmativo con una lista de las
posiciones de cada reina en el tablero en caso de ser posible o un mensaje negativo si no es
posible

Cada reina debe estar en una columna, una fila y una diagonal diferente a las otras. por lo cual
podemos concluir que el nmero mximo de reinas que se pueden colocar en un tablero 8x8
son 8 reinas.
Por lo tanto, si el nmero de reinas ingresado es mayor a 8 no es posible acomodar las N reinas
dentro del tablero se deber terminar el algoritmo y dar un mensaje negativo
Si el nmero es menor o igual a 8 si es posible acomodar las reinas

Solucin
Si el numero ingresado N es una entrada valida se verifica si es mayor a 8, en caso de ser mayor a 8 se da
un mensaje negativo inmediatamente de lo contrario se empiezan a acomodar las reinas dentro del
tablero, Para acomodar cada reina sin que este amenazando se van a utilizar 4 estrategias

1.Se les dar un ndice a todas las columnas del 1 al 8

2.Se les dar un ndice a todas las diagonales descendentes del -7 al 7

3. Se les dar un ndice a todas las filas del 1 al 8

4. Se lleva un contador C de las reinas que han sido ubicadas

Las posiciones de las reinas se darn en forma cartesiana (x,y) donde X es la fila y Y es la columna

Cada posicin de las reinas se guardar en una lista de coordenadas la cual se mostrar en la salida del
algoritmo

1.La primera reina se coloca en una posicin aleatoria dentro del tablero seleccionando dos nmeros
(x,y) aleatoriamente entre 1 y 8, uno para su fila y otro para su columna, dicha posicin se guarda en la
lista de posiciones, se elimina X del ndice de las filas y se elimina Y ndice de columnas, adems de esto
se realiza la operacin X-Y=K y K se elimina del ndice de diagonales

2.Para posicionar las siguientes reinas se verifica si C es menor a el numero N de reinas ingresado, en
caso de ser menor se pasa al paso 3 en caso contrario se pasa al paso 5

3.Se escoger el primer nmero dentro del ndice de filas el cual ser X, luego con el ndice de columnas
se har la operacin X-(ndice de columna)=W con cada nmero en el ndice, Hasta que se encuentre un
W que este en el ndice de diagonales, se toma entonces el ndice de columna como Y y se procede a
eliminar X del ndice de filas, Y del ndice de columnas y W del ndice de diagonales

4.Se le suma 1 al contador C y se regresa al paso 2

5. se da la lista de posiciones de las reinas y finaliza el algoritmo


Pseudocdigo

Entrada: Entero N>0

1. Cadena Mensaje=
2. Si N > 8 Mensaje=No es posible y se finaliza el algoritmo
3. Mensaje=Si es posible
4. int C=0
5. int B=0
6. int K=1
7. Lista de enteros IC= {1,2,3,4,5,6,7,8}
8. Lista de enteros IF= {1,2,3,4,5,6,7,8}
9. Lista de enteros ID={-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7}
10. Int X=entero aleatorio [1,8]
11. Int Y=entero aleatorio [1,8]
12. (X,Y) se guarda en lista de posiciones
13. X se elimina de IF
14. Y se elimina de IC
15. W=X-Y
16. W se elimina de ID
17. C=C+1
18. Si C>=N Finalizar algoritmo
19. X=primer elemento de IF
20. B= elemento [K] de IC
21. Si X-B no se encuentra en ID, K=K+1 regresar al paso 20.
22. Y=B
23. (X,Y) se guarda en lista de posiciones
24. X se elimina de IF
25. Y se elimina de IC
26. W=X-Y
27. W se elimina de ID
28. K=1
29. Regresar al paso 17.

Salida: Lista de posiciones y Mensaje

Vous aimerez peut-être aussi