Introducci贸n
驴Qu茅 es un grafo?
驴Qu茅 es un 谩rbol?
驴Qu茅 es recursi贸n?
Aplicaciones reales de grafos y 谩rboles
Formas de representar un grafo
DFS
An谩lisis de DFS: algoritmo de b煤squeda en profundidad
Programando DFS de forma recursiva
Otras formas de programar DFS
Recorridos y profundidad de un 脕rbol
Sum Root to Leaf Numbers: an谩lisis del problema
Soluci贸n de Sum Root to Leaf Numbers
Playground: Sum Root to Leaf Numbers
Programando Sum Root to Leaf Numbers en Golang
Number of Islands: an谩lisis del problema
Soluci贸n de Number of Islands
Playground: Number of Islands
Programando Number of Islands en Python
Ejercicios recomendados de DFS
Ejercicios resueltos de DFS
BFS
An谩lisis de BFS: algoritmo de b煤squeda en anchura
Programando BFS con Python
Minimum Knights Moves (movimientos de caballo en ajedrez): an谩lisis del problema
Soluci贸n de Minimum Knights Moves
Playground: Minimum Knights Moves
Programando Minimum Knights Moves con Python
Rotting Oranges: an谩lisis del problema
Soluci贸n de Rotting Oranges
Playground: Rotting Oranges
Rotting Oranges con Java
Shortest Bridge Between Islands: an谩lisis del problema
Soluci贸n de Shortest Bridge Between Islands
Playground: Shortest Bridge Between Islands
Programando Shortest Bridge Between Islands con Python
Ejercicios recomendados de BFS
Ejercicios resueltos de BFS
Backtrack
Algoritmo de Backtrack
Letter Combinations of a Phone Number: an谩lisis del problema
Soluci贸n de Letter Combinations of a Phone Number
Programando Letter Combinations of a Phone Number con C++
Playground: Letter Combinations of a Phone Number
Restore IP Addresses: an谩lisis del problema
Programando Restore IP Addresses con C++
Playground: Restore IP Addresses
Word Search: an谩lisis del problema
Soluci贸n de Word Search
Playgrund: Word Search
Programando Word Search JavaScript
Reto: N Queens Puzzle
Ejercicios recomendados de Backtrack
Ejercicios resueltos de Backtrack
Pr贸ximos pasos
驴Qu茅 otros algoritmos y tipos de grafos puedes aprender?
驴Quieres m谩s cursos avanzados de algoritmos?
Contributions 5
Questions 0
Mi soluci贸n no pasa el segundo test, pero a m铆 me funciona bien.
Este c贸digo filtra algunos movimientos, lo que lo hace m谩s eficiente.
PD: Vengo desde la pr贸xima clase y me falt贸 poner una forma de verificar si ya hab铆a visitado un lugar en el tablero.
def minKnightMoves(origenX, origenY, objetivoX, objetivoY):
# Tu c贸digo aqu铆 馃憞
saltos = 0
movimientos = [(origenX,origenY)]
while movimientos:
for _ in range(len(movimientos)):
mov = movimientos.pop(0)
x = mov[0]
y = mov[1]
current_modulo = int(((x - objetivoX )**2 + (y - objetivoY)**2)**(1/2))
print(current_modulo)
if x == objetivoX and y == objetivoY:
print("-------------------")
print(x,y)
print("-------------------")
return saltos
for next_mov in [(-1,2),(1,2),(2,1),(2,-1),(1,-2),(-1,-2),(-2,1),(-2,-1)]:
"""mi peque帽o aporte para mejorar un poco el rendimineto"""
new_modulo = int((((x + next_mov[0] )- objetivoX )**2 + ((y + next_mov[1]) - objetivoY)**2)**(1/2))
if current_modulo-1 > new_modulo or new_modulo <= 2:
movimientos.append((x + next_mov[0] , y + next_mov[1] ))
saltos += 1
return saltos```
Want to see more contributions, questions and answers from the community?