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?
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Camila Londoño
Lectura
Buscaminas
¡Juguemos al juego del buscaminas!
Se le da un tablero de matriz de m x n caracteres que representa el tablero de juego donde:
...
Regístrate o inicia sesión para leer el resto del contenido.
Aportes 2
Preguntas 0
Les comparto mi solución del problema de serpientes y escaleras.
def a_numero(actual: tuple[int], filas: int, columnas: int) -> int:
f, c = actual
filas_anteriores = filas - 1 - f
direccion_actual = 1 if (filas-f)%2 == 1 else -1 # 1 a izq, -1 a der
columnas_anteriores = c+1 if direccion_actual == 1 else columnas-c
return filas_anteriores * columnas + columnas_anteriores
def a_posicion(numero: int, filas: int, columnas: int) -> tuple[int]:
filas_anteriores = int((numero-1) / columnas)
fila = filas - 1 - filas_anteriores
direccion = 1 if (filas-fila)%2 == 1 else -1 # 1 a izq, -1 a der
columnas_anteriores = (numero-1) % columnas
columna = columnas_anteriores if direccion == 1 else columnas-1-columnas_anteriores
return (fila, columna)
def serpientes_escaleras(tablero: list[list[int]]) -> int:
ROWS, COLS = len(tablero), len(tablero[0])
n2 = ROWS * COLS
cola = [(ROWS-1, 0)]
num_pasos = 0
while cola:
for _ in range(len(cola)):
actual = cola.pop(0)
actual_numero = a_numero(actual, ROWS, COLS)
posibles_pasos = range(1,7)
for paso in posibles_pasos:
nuevo_numero = actual_numero + paso
if nuevo_numero < n2:
f, c = a_posicion(nuevo_numero, ROWS, COLS)
valor_casilla = tablero[f][c]
if valor_casilla == -1:
cola.append((f, c))
else:
cola.append(a_posicion(valor_casilla, ROWS, COLS))
else:
return num_pasos+1
num_pasos += 1
return -1
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?