¿Cuáles son los mejores enfoques para aprender programación dinámica? ¿Y de dónde se puede aprender esto? ¿Qué tan útil es esto en la programación competitiva?

Te diré algunos puntos.

Primero aumenta tus habilidades de pensamiento. (No tome esto, de manera incorrecta, mi intención es decir, resolver un problema relacionado con la recursión y después de resolver el problema a través de la recursión, intente resolverlo de forma iterativa (si es posible, pero intente), ¿cómo ayudará? lo entenderás) y si ya has practicado, salta al segundo paso.

Luego comience a resolver la Pregunta clásica de programación dinámica.

Mochila.

LCS.

Matrix Chain Multipication.

Cambio de moneda.

LIS

Editar distancia.

Partición equilibrada.

Estrategia óptima para un juego.

Ahora comience a resolver el problema de DP en varios jueces en línea (Spoj, Codeforces, hackerrank, codechef, etc.)

Si se queda atascado en algún lugar y no encuentra otra solución que leer la solución de otros usuarios e intentar comprenderlos. También aumentará tus habilidades de pensamiento, lo sabrás (ohh, sí, también se puede resolver de esta manera).

Por último, pero no menos importante, DP es un ejemplo perfecto de “La práctica hace al hombre perfecto”. Cuanto más practicas, más aprendes.

Ahora, todavía está pensando que por qué me concentro más en la recursividad, algunas veces pensar que una solución recursiva es más fácil que iterativa (ese es mi punto de vista, puede ser para usted fácil de resolver a través de la iteración).

Alguna referencia para la práctica: –

Programación dinámica: de principiante a avanzado

Algoritmos – GeeksforGeeks

Clasificador de problemas para el juez en línea Esfera (SPOJ)

Problemas de programación para dp

700 problemas para entender que completa la programación algorítmica.

Tutorial para programación dinámica

Programación dinámica – I – Arjit Srivastava