Podemos aprovechar las pequeñas limitaciones y utilizar una búsqueda de Breadth-First.
En cualquier momento, queremos saber dónde está el caballero y qué peones aún no se han eliminado. Hay 8 * 8 posiciones posibles para el caballero y podemos usar una máscara de bits de bits P para representar si el peón ya estaba eliminado.
Entonces, a lo sumo [matemática] 8 ^ 2 \ veces 2 ^ P [/ matemática] estados posibles. En cada estado, intentamos hacer los (hasta) 8 saltos posibles de caballeros.
- ¿Cómo puedo aleatorizar la matriz almacenada y luego usarla como entrada?
- ¿Hay algún proceso o conjunto de preguntas que uno debería hacer al resolver problemas tácticos de ajedrez?
- Si podemos ordenar datos usando SQL, ¿por qué necesitamos estudiar diferentes algoritmos de ordenación?
- Te dan n pilas con p monedas, y cada jugador elimina al menos 1 moneda. El número de monedas eliminadas por un jugador no puede ser eliminado por el otro. ¿Quién ganará?
- Suponiendo que todos estos algoritmos resuelven el mismo tipo de problema, ¿cuál se recomienda? ¿Y por qué?
Comenzamos en la posición inicial del caballero y una máscara de bits con bits P establecidos en 1. Si visitamos una posición con un peón, lo eliminamos al establecer el bit correspondiente en 0. Terminamos cuando la máscara de bits es igual a 0, lo que significa que todos los peones fueron eliminados
Por lo tanto, hacemos operaciones [matemáticas] O (8 ^ 3 \ veces 2 ^ P) [/ matemáticas]. Cuando P = 8, esto produce ~ 131072 operaciones, que es bastante pequeño.