En primer lugar, y lo más importante: practicar. Piensa en soluciones para todo cada vez. No tiene que estar en su computadora, programando. Todos los algoritmos lo harán muy bien. Así: cuando intercambiaban cartas, ¿cómo comparaban su mazo y el de sus amigos para determinar la mejor manera para que ambos intercambiaran? ¿Cómo puedes definir cuántos intercambios puedes hacer para hacer el máximo y aún así no recibir ninguna carta repetida?
Use bases de datos de problemas y jueces en línea como este sitio, UVa Online Judge, que tiene cientos de problemas relacionados con algoritmos generales. Y no necesita ser un programador experto para resolver ninguno de ellos. Lo que necesitas es una buena habilidad con la lógica y las matemáticas. Allí, puede encontrar problemas desde los más simples hasta los más desafiantes. La mayoría de ellos provienen de maratones de programación.
Luego, puede implementarlos en C, C ++, Java o Pascal y enviarlos al juez en línea. Si tiene un buen algoritmo, será aceptado. De lo contrario, el juez dirá que su algoritmo dio la respuesta incorrecta al problema, o tomó demasiado tiempo resolverlo.
Leer sobre algoritmos ayuda, pero no pierdas demasiado tiempo en ello … Leer no ayudará tanto como tratar de resolver los problemas por ti mismo. Tal vez puedas leer el problema, tratar de encontrar una solución para ti, comparar con la solución propuesta por la fuente y ver qué te perdiste. No intentes memorizarlos. Si tiene el concepto bien aprendido, puede implementarlo en cualquier lugar. La comprensión es la parte más difícil para la mayoría de ellos.
Consulte el libro “Lógica de introducción y conjuntos para informáticos” de Nimal Nissanke (Addison Wesley).
Si tengo un año para ser realmente bueno en programación algorítmica y todavía no he probado suerte en programación competitiva, ¿cuál debería ser mi enfoque?
Related Content
¿Por qué me cuesta entender las computadoras y las tecnologías?
¿Cómo se relacionan los sistemas inteligentes y el aprendizaje automático?
¿Podemos resolver el problema DISHOWN usando C ++ STL? ¿Si es así, entonces cómo?
¿Cuál es el significado de precisión en la computadora?
¿Qué equipos indios participarán en las finales mundiales de ACM-ICPC 2016-2017?
Registrarse en Topcoder. Una vez que se registre, enviarán un correo electrónico (principalmente cada quince días) junto con el enlace para registrarse en los concursos. La mejor parte es que puedes elegir el tipo de concursos en los que te gustaría participar, por ejemplo. atrapando concurso de errores, algorítmico, etc.
Ahora para perfeccionar sus habilidades de algoritmo, sugeriría el siguiente libro
Estructuras de datos y algoritmos simplificados: estructura de datos y acertijos algorítmicos, segunda edición –
Una vez que comience a leer el libro, intente e implemente los algoritmos usando C ++.
Una vez que llegue a este punto, sabrá qué hacer a continuación y ya se habría convertido en un mejor.
Algunas referencias más:
¿Cuáles son algunos buenos algoritmos y libros de rompecabezas de estructura de datos, es decir, hay libros similares al libro de rompecabezas de algoritmos de Nanay Levitin?
Además de la Inteligencia Colectiva de Programación de O’Reilly, ¿qué es un buen libro de algoritmos con ejemplos en Python?
Buena suerte
More Interesting
¿Una prueba de que NP está en P realmente romperá los algoritmos de criptografía?
¿Por qué los tamaños de las computadoras siguen disminuyendo / disminuyendo?
¿Cómo te interesaste en las estadísticas y el aprendizaje automático?
¿Es Londres una buena ciudad para una startup tecnológica?
¿Cuáles son las ventajas y desventajas de utilizar Google App Engine y Heroku en este momento?
¿Cuál es la diferencia entre el trabajo de TI y la informática, trabajo principal?
¿Qué es la biblioteca en lenguaje informático?
¿Qué tan grande puede llegar a ser un átomo?
¿Cuál es la diferencia entre el modo por lotes y el mini lote en el aprendizaje automático?
¿Cuál es el mejor instituto en India para aprender ingeniería inversa y desarrollo de exploits?
¿Por qué necesitamos comunicaciones entre procesos?
¿Cuál es la mejor manera de raspar datos anidados / jerárquicos de sitios web?