C/Visual C - Problema de ajedres

 
Vista:

Problema de ajedres

Publicado por Fernando (1 intervención) el 28/05/2001 05:20:06
Me llamo Fernando, y de antemano agradezco a la persona que me pueda ayudar con este problema, pues es el último proyecto de la asignatura algoritmos III , y necesito pasarla como sea, en fin, el problema es el siguiente:

Se trata de llevar al rey de un lugar a otro del tablereo sin ponerlo en jaque con algún peon, el rey se los podra comer solo si el peón está atras, y no podra moverse a una casilla amenazada por un peon.
El programa debe hacerse usando el método de busqueda con retroceso (recursión), deberá encontrar la solución en el menor número de pasos; recibira por argumentos del main un archivo de texto que contendrá la siguente información:

2
e3 h5 5 e1 f3 g5 c4 h3
h3 f5 3 h1 e3 g6

Lo que significa, la primera fila contiene el número de problemas en este caso 2, las otras filas contienen cada una en orden la posición inicial del rey, la posicion final, el número de peones, y las posiciones de los peones.

Espero que me puedan alludar con esto.

Quedo muy agradecido. Fernando.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema de ajedres

Publicado por Emilio (42 intervenciones) el 29/05/2001 03:40:35
Es importante que digas si el rey puede regresar a la misma casilla donde estubo alguna ves. Si puede la solucion es que hay un numero de soluciones infinitas por lo tanto no puedes usar el metodo de recursion tan facilmente, tienes que pensar en una solucion donde no explote tu stack, si tomas en cuenta que el rey no puede regresar a su mismo lugar donde estubo el problema es facil y estoy seguro que encontraras una solucion por ti mismo. Pudes usar un arreglo de 8*8 que es el numero de casillas que hay y inicializarlo con los datos de entrada por ejemplo:
int tablero[8][8];
donde esta el rey al principio = 1
donde llega el rey al final = 2
donde hay peones = 3
donde no hay nadie =0
donde pasa el rey pones 1 y no pudes regresar al 1, fijate si pudes comerte al 3 y si pudes pasa a su casilla y pon uno y fijate si pudes moverte a alguna casilla segun donde alla 3 para no entrar en jaque tu condicion de regreso en tu recursion es no salirte del tablero o si llegas al 2.
Ya con esto tu funcion recursiva es muy facil. SUERTE.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar