Aquí está la estrategia que me parece bastante obvia: practicando mucho la programación dinámica . Funciona más o menos de la misma manera en cualquier actividad: está mejorando al practicarlo y puede mejorar de manera más efectiva al practicar de manera más inteligente.
Simplemente resuelva muchos de estos problemas; puede elegir problemas marcados como DP en SPOJ o Timus, o simplemente usar Codeforces / TopCoder para tener acceso fácil a todos los códigos y editoriales, o tomar cualquier otro OJ que desee.
Siga leyendo las soluciones de otras personas, así como los editoriales proporcionados, incluso si tiene una solución que funcione.
- Cómo resolver el problema de 'cortar el árbol' en HackerRank
- ¿Existe un algoritmo borroso que replica la miopía?
- ¿Cuál es la diferencia entre el algoritmo que venció a los humanos en el ajedrez y el algo que venció a los humanos en Go?
- ¿Podría un algoritmo informático convertirse en el presidente de los Estados Unidos?
- ¿Cómo encuentra un ciclo en una lista "simple" usando solo dos punteros?
Básicamente, necesita dos cosas: el conocimiento de varios conceptos / técnicas clásicas (es posible obtener la optimización de Knuth usted mismo, pero simplemente aprenderlo parece una mejor idea) y la capacidad de usar estas cosas de manera adecuada. Si está buscando algún consejo mágico como todo ese “primer paso: resolver subproblemas; segundo paso: construir una recurrencia; tercer paso: resolver el problema “ cosas que puedes encontrar en los artículos ” aprender programación dinámica en 20 minutos “- No voy a ponerlo aquí. Creo que simplemente no funciona de esta manera; o tal vez soy demasiado estúpido para eso, al menos sé con certeza que no funcionó en mi caso. La práctica es lo que funcionó, y lo que realmente sigue funcionando, ya que todavía estoy aprendiendo cosas nuevas de DP constantemente. Volviendo a dos cosas que necesita: la capacidad de usar las ideas de manera adecuada se trata de práctica, y el conocimiento de ideas / trucos probablemente se puede obtener solo leyendo libros / tutoriales, pero de todos modos lo haré parte de la práctica.