Yo tenía esta tarea en la programación de la competencia: Hay dos caballeros, que se $(p_1,q_1)$ y $(p_2, q_2)$. $(p,q)$ el caballero de la figura, con p(q)-longitud primer paso, y q(p)-longitud del segundo paso en la dirección perpendicular. Simple chess knight es (2,1) o (1,2) caballero. Dado $(x_1,y_1)$ $(x_2,y_2)$ - posición de los dos caballeros en $(W\times H)$ tablero de ajedrez. Encontrar el mínimo camino que conduce tanto a los caballeros en la misma celda.
Como nunca vi tarea como esta, he empezado con la más simple:
Dado $(p,q)$ caballero en $(W\times H)$ tablero de ajedrez en $(x_0,y_0)$ inicial de la célula, puede caballero de la visita $(x,y)$ celular?
Puedo utilizar algún algoritmo recursivo para encontrar, por supuesto, pero me he decidido a mirar este problema analyticaly. Hice este sistema:
$$pk_1+qk_2=x-x_0\\ qk_1+pk_2=y-y_0$$
Las soluciones de este sistema son: $$k_2=\frac{(y-y_0)p}{p^2 + q^2}\\ k_1=\frac{x-x_0-qk_2}{p}$$
Pensé, que será un punto: todos los disponibles para la visita de células se llevan a $k_1, k_2$ ser números enteros. Pero de hacer algunos de los ejemplos que me di cuenta, de que realmente disponible para las células de la $k_1, k_2$ son racionales, y para aunavailiable células que son irracionales. Así que tengo preguntas:
- Donde está mi error en el razonamiento? [Respuesta] Porque yo no toman en cuenta la dirección, gracias @Joffan.
- No parece ser una manera práctica de usar en el programa, porque no puedo distinguir racional de irracional en el código. Entonces, ¿cuál será salvo la recursividad y la programación lineal?
- Creo que este problema tiene nombre, google y más de la lectura. Así, donde puedo encontrar algo de información sobre ella?