ALGORITMO 8 REINAS Sabiendo el movimiento de la pieza de la reina en un tablero de aedrez en!ontrar la" po"i!ione" de 8 reina" en el mi"mo tablero para #ue nin$una pueda !omer a la" otra" % & por tanto tampo!o "er !omida' (Inve"ti$ando un po!o en!uentro #ue para e"te problema !l)"i!o *a& +, "olu!ione"
Primera valoración del ejercicio No "e puede repetir .la ni !olumna No "e puede repetir dia$onal En !ada .la "olo 1 reina En !ada !olumna "/lo 1 reina Mar!ar .la" & !olumna" o!upada"
El al$oritmo "e podr0a de.nir !on do" l0nea" !omo' 2robar a !olo!ar la reina de la .la i34"ima en !ada una de la" po"i!ione" di"ponible"'5 6olo!ar la" reina" re"tante" operando de modo re!ur"ivo'5
ALGORITMO 8 REINAS
Estado
METODOLOGIA
Inicial
La" reina" #ue *a& Estado
fnal
La" po"i!ione" #ue #uedan libre" Procesamiento
6olo!ar .!*a en lu$ar permitido & no o!upado
ENT 6olumna" o!upada" por va!0a" anteriore" SALIDA 6olumna" di"ponible"
Creación del se!docódi"o Di"ponible"(o!up-' 77re!ibe un ve!tor o una li"ta !on d9:;1;,;<;=;>;?;%@ tamaBo(o!up2ara !ada ! en o!upC Eliminar ! de d Eliminar (!- de d Eliminar (!3- de d 33 devolver d !a"o !on!reto o!up9< > : =@ = < , 1 d9: 1 , < = > ? %@
~,~
ALGORITMO 8 REINAS
METODOLOGIA
~<~
#ate$ %&'&(&)(%* IMPLEMENTACI+N ALGORITMO 8 REINAS EN ,A-A Imlementamos el m.todo disoni/les 0 comro/amos si 1!nciona ara !n caso concreto2 import java.util.Iterator; import java.util.LinkedList; import java.util.List; /** * @author nessy* */ public class OchoReinas { //PSEUO!OI"O // is#oni$les%ocu#&. //reci$e un vector o una lista con // d'()+,-012 // k' ta3a4o%ocu#& // Para cada c en ocu#5 // Eli3inar c de d // Eli3inar %c6k& de d // Eli3inar %c7k& de d // 8 7 7 // devolver d /**Este 39todo sirve #ara deter3inar las colu3nas en las :ue * se #uede colocar la siuiente reina ha$i9ndose #uesto ya alunas * reinas cuyas colu3nas se dan * @param ocu# !olu3nas :ue ocu#an las reinas #revias * @return !olu3nas dis#oni$les sin co3erse */ public static Lista ha$er utili?ado un @rrayList for%int i');i
ALGORITMO 8 REINAS B