Como no ha proporcionado muchos detalles, responderé la pregunta de manera genérica.
Sí, necesita tener un conocimiento básico de estructuras de datos y algoritmos para participar en SPOJ, CodeChef y TopCoder. Este es el por qué:
C ++ o cualquier otro lenguaje es una herramienta para expresar su lógica y todos los detalles están en las estructuras de datos y los algoritmos que elija. Por ejemplo, debe saber la diferencia en una pila, cola, lista vinculada para operaciones de lectura / escritura / clasificación / actualización y, de manera similar, cuando debe realizar una BFS (Breadth-First-Search) o DFS (Depth-First-Search) en un árbol. Con tal conocimiento, puede programar su lógica en C ++.
- ¿Cuál es el enfoque algorítmico para resolver el problema de hackerrank Substring Diff?
- ¿Cuál es el algoritmo más utilizado para la agrupación de documentos de texto?
- Cómo encontrar el elemento mínimo en un subárbol de un montón máximo
- Cómo medir la precisión de un algoritmo de planificación de ruta
- ¿Implementar un algoritmo de detección de esquinas es un buen ejercicio para la visión por computadora?
He programado en C, C ++, Java, Ruby y un poco de Javascript. En mi experiencia, siempre he sentido que un idioma hace una cosa mejor que el otro, pero luego un idioma solo se reduce al medio en el que se está comunicando con la máquina. Sin divagar más, sí, debe tener una comprensión bastante buena de las estructuras de datos y algoritmos.
Aquí hay un enlace para comenzar: Stanford CS Ed Library
Hay suficiente teoría para comenzar y también tiene problemas que puede practicar en Linked List and Trees. Feliz codificación !!!
Actualizar:
Es bueno saber que quieres participar en SPOJ y TopCoder tan temprano. Te aconsejo que comiences con cosas simples primero y luego escales lentamente la montaña. Comience a programar pilas, colas, listas vinculadas, árboles, gráficos en el orden que he mencionado y también resuelva las preguntas que los rodean. El enlace en la respuesta debería ayudarlo a comenzar bien.
Solo sepa que debe cubrir bien su terreno, es decir, tener un conocimiento profundo de las estructuras de datos y algoritmos subyacentes antes de comenzar a participar.