¿Puedo volverme competente en estructuras de datos y algoritmos sin leer el libro CLRS?

Sí, seguro, hay otros buenos libros y tutoriales en video, y también puedes hacer una programación competitiva.

Para más otras soluciones, libros o métodos, verifique esto:

Respuesta de:
La respuesta de Abdelrahman Hamdy a ¿Cuál debería ser mi rutina para dominar el algoritmo y la estructura de datos?

Creo que la mejor y más sistemática forma de dominar algoritmos y estructuras de datos es a través de una programación competitiva.

Y para estudiar programación competitiva, te puedo decir 4 grupos de enfoques:

Grupo 1:

Encuentre un buen entrenador para trabajar, él sabe qué hacer con usted, generalmente es el entrenador de su facultad o universidad, o puede unirse al capítulo de ACM en su universidad o país, ellos le enseñarán.


Grupo 2:

Vaya con un libro de programación y concursos como Competitive Programming 3: Competitive Programming, 3rd Edition: Steven Halim: Amazon.com: Books.

mira esto para más detalles:
La respuesta de Abdelrahman Hamdy a ¿Qué libro es mejor para prepararse para el IOI, la Programación competitiva 3 de Halim o los Desafíos de programación de Skiena?

O vaya con el libro de algoritmos como:

CLRS: Introducción a los algoritmos, 3a edición (MIT Press): Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: 9780262033848: Amazon.com: Libros

Algoritmos desbloqueados: Algoritmos desbloqueados (MIT Press): Thomas H. Cormen: 9780262518802: Amazon.com: Libros

También puede seguirlo de una manera sistemática como esta:
La respuesta de Abdelrahman Hamdy a ¿Cómo se debe leer Introducción a los algoritmos (CLRS) para aprovecharlo al máximo?


Grupo 3:

Los cursos en línea, y hay pocos de ellos que realmente discuten algoritmos y estructuras de datos forman la perspectiva de la programación competitiva, por ejemplo:

Cómo ganar competiciones de codificación: secretos de campeones
CS 97SI: Introducción a los concursos de programación
¡Una lista increíble para programación competitiva! – Fuerzas de código
Curso de programación competitiva – Codeforces
CS104c: Programación competitiva
Página de inicio de Tim Korb
Programación competitiva en C ++
Programación competitiva – Comunidad en Commonlounge
https://acm.wustl.edu/cse232/
CS3233 – Programación competitiva
CS1090 – Programación competitiva
Material de apoyo – Programación competitiva
Programación competitiva – Unacademia

también los algoritmos y el curso de estructuras de datos pueden funcionar bien también:
Diseño y análisis de algoritmos por Stanford:
Parte 1: Algoritmos: Diseño y Análisis, Parte 1
Parte 2: Algoritmos: Diseño y Análisis, Parte 2

e Introducción a Algoritmos por MIT:
Introducción a los algoritmos (SMA 5503)


Grupo 4:

Aprender haciendo:

Creo que este es el mejor comienzo para un principiante es comenzar a resolver los problemas desde el más resuelto hasta el arrendamiento resuelto, puede encontrar esta lista aquí:

Conjunto de problemas – Codeforces

También puede usar el A2OJ, es un sitio web creado para gestionar los problemas y agruparlos: Juez en línea A2

encontrará una lista de los problemas As, Bs, Cs, etc., con su nivel de dificultad, por ejemplo:

A: Juez en línea A2

y encuentra a los otros aquí:

A2 Juez en línea

Todos los problemas de CodeForces, el sitio web solo los gestiona y los agrupa, pero los problemas del propio A2OJ son realmente malos, y el sitio web en sí tiene muchos errores, así que solo úselo para organizar la práctica.


Si yo fuera usted, y soy un principiante ingenuo, entonces lo que haré exactamente es:

  1. Comience por resolver el problema más resuelto en Codeforces y use este método para resolver y resolver problemas:
    La respuesta de Abdelrahman Hamdy a ¿Cuál es el enfoque correcto para resolver preguntas de práctica de programación competitiva?
  2. Después de un mes o dos de trabajo duro, comience a tomar un curso en línea mientras realiza el número (1).
  3. Después de alcanzar la mitad del curso más o menos, comience a leer esta mitad de un libro de algoritmos como CLRS, mientras hace el número (1) y detiene el número (2).
  4. Ahora tome un descanso de conocimiento y comience a hacer el número (1) solo y bruscamente.
  5. volver al curso mientras haces el número (1).
  6. después de terminar el curso, comience en la segunda mitad del libro también mientras hace el número (1).
  7. Ahora terminaste un curso y un libro, y resolviste muchos problemas (si hiciste esto de la manera correcta con mucho trabajo, es posible que en este punto te encuentres resuelto + 1k problemas y hace 3 meses más o menos desde que comenzaste todo proceso y entrenamiento y su nivel en codeforces puede ser naranja o morado si trabajó muy duro 🙂).

También verifique estos:
La respuesta de Abdelrahman Hamdy a ¿Cuáles son los conceptos que uno debe saber antes de ir a la programación competitiva?

¿Cómo puedo ser bueno en la programación competitiva? ¿Hay algún curso que me lleve un paso adelante antes de comenzar a hacer problemas SPOJ o TopCoder? Soy bueno en estructuras de datos.

Siempre puede leer un libro más fácil como Estructuras de datos y análisis de algoritmos en C ++ por Mark A. Weiss.

Un enfoque más práctico es leer sobre temas / algoritmos específicos e implementarlos para resolver algunos problemas clásicos. USACO tiene un excelente programa de capacitación que brinda una plataforma gratuita para hacer esto: USACO Training Program Gateway.

Este programa está dividido por módulos. Cada módulo generalmente se enfoca en un tema, por ejemplo, Programación dinámica, contiene un texto introductorio y problemas para resolver. Obtiene una buena comprensión al implementar realmente los algoritmos y las estructuras de datos.

Tenga en cuenta que el libro CLRS contiene muchos más temas que los que puede aprender en USACO, pero USACO sigue siendo un buen lugar para aprender y practicar.