¿Cómo utilizar la pila de estructura de datos y el lenguaje Java para implementar el problema del recorrido del caballo, es decir, dejar que el caballo de ajedrez complete todas las posiciones en el tablero sin repetir?
Jaja, puedo resolver los ejercicios clásicos de retroceso, pero no puedo jugar al ajedrez. Si el caballo mueve el signo solar, te escribiré uno.
El principio es muy simple. Piense en un tablero de ajedrez como algo bidimensional. Olvídese de que Zhu Bajie ha estado fuera de la escuela durante muchos años. El eje X, el eje Y y la esquina inferior izquierda del tablero de ajedrez se utilizan como origen. Debido a que el movimiento es Tianzi, suponiendo que las coordenadas iniciales del caballo son (X, Y), entonces su regla de movimiento es (X). -1, Y-2) o (X-1, Y 2) o (X-2, Y-1) o (X-2, Y 1) o (X-2, Y 1) o (X 1, Y 2) o (X 1, Y 2) o (X 1, Y-2) o (X 2, Y 1) o (X 2, Y-1) estas 8 reglas de movimiento, no sé si las entiendes , aquí empiezo a escribir código. . . .
Tengo más cosas que hacer, así que no te apresures. Escribiré el código lentamente.
Escribí un ejemplo simple. La lista también es una forma de implementación de pila. Échale un vistazo primero, no sé si te resultará útil. 3*4 o 4*5. Si depura un número tan pequeño, el tiempo de ejecución del programa de la placa grande será muy largo.
Lista;
/**
* Demostración de la Semana del Caballero, sin infalibles
* Simulación de tablero de ajedrez, se supone que A es la posición inicial del caballo
/**
p>
* 3
* 2
* 1
* 0 A
* 0 1 2 3
* @author Piggy A
*
*/
Clase pública DemoKnight
{
private static int NX = 3;
private static int NY = 4; // tamaño del tablero vertical
private static int[] dx = { 2, 1, -1, - 2, -2, -1, 1, 1, 2};
int estático privado[] dy = {1, 2, 2, 1, -1, -2, -2, -1} ;
private int sx = 0; // La coordenada horizontal inicial del ciclista
private int sy = 0 // La coordenada vertical inicial del ciclista
lista privada; puntos = new ArrayList();
lista privada pasos = new ArrayList(); //se usa para registrar la ruta tomada por el caballero
public static void main(String[] args )
{
DemoKnight dkt = nuevo DemoKnight();
dkt.sx = 0
dkt.sy = 0;
Lista lista = new ArrayList();
dkt.steps.add(dkt.getPointStr(dkt.sx, dkt.sy));
dkt.KnightTrav(dkt.sx, dkt.sy);
int size = dkt.points.size()
System.out.println("Finalmente terminado; .***Se encontró " tamaño "tipo de solución");
for(int i=0; ilt; size; i ){
Lista lista2 = (Lista) dkt. puntos.get(i);
for(int j=0;jlt;list2.size();j){
System.out.print(list2.get(j ) "--gt;");
}
System.out.println()
;