¿Cuáles son los algoritmos más utilizados en los que puedo confiar para mejorar mis habilidades de resolución de problemas?

Por supuesto, necesitará comprender la mayoría de las mecánicas detrás de los algoritmos para saber cuál aplicar para qué situación y cómo ajustar un poco el algoritmo para que coincida con el problema dado.

Tengo cerca de un año de experiencia en resolución de problemas y puedo asegurarles que los principiantes encontrarán problemas avanzados muy difíciles, y esto no se debe únicamente a la falta de conocimiento algorítmico.

La resolución de problemas en codeforces y otros sitios de programación competitivos requiere que piense de una manera determinada que es muy difícil de describir o explicar, la mejor descripción que puedo proporcionar es “Pensamiento lateral”, pero nuevamente, esto se puede obtener a través de la experiencia. Por lo tanto, le sugiero que se asegure de comprender la mayoría de los algoritmos comunes en la programación competitiva (comprender, no memorizar) y practicar primero con problemas fáciles y pasar gradualmente a preguntas más difíciles, aprendiendo de los análisis de los problemas más difíciles. Asegúrese de pasar tiempo pensando en el problema antes de darse por vencido o buscar soluciones en Internet.

EDITAR: para algoritmos comunes que debe saber (no en orden de importancia)

  • (No es un algoritmo, pero es muy importante) Recursión y otros tipos de programación dinámica
  • DFS y BFS, luego el algoritmo APSP de Dijkstra y Floyd Warshall
  • Algoritmo de suma máxima de rango 1D de Kadane
  • Árbol de segmentos (implementación, manipulación)
  • Codiciosos y dividir y conquistar métodos
  • (de nuevo, no tanto un algoritmo) Aritmética modular
  • Sumas acumulativas

Hay un conjunto básico de habilidades que encuentro surgen una y otra vez.

Los bucles For o los bucles For anidados aparecen muy a menudo. Como consejo general para eso, no cambie el mismo ciclo for que está iterando. Eso lleva a algunos errores desagradables. Especialmente cuando elimina de la misma matriz sobre la que está iterando.

Serializar también es importante. Saber cómo convertir un tipo de datos complejo en algo simple como un json o un diccionario. Para eso, diría que se centre en almacenar cosas en diccionarios en lugar de listas o matrices. Simplificará la vida más adelante. En lugar de hacer algo como:

find = “findme”
para i = 0 a i = longitud (lista):
si la lista nombre == encontrar:
lista de retorno carné de identidad

Harás algo como:

find = “findme”
diccionario [encontrar]. carné de identidad

Más fácil.

Este es uno de los mejores libros de algoritmos que he leído. “Introducción a los algoritmos, un enfoque creativo” -udi manber. http://www.amazon.co.uk/gp/aw/re … a diferencia de otros libros, este enfoque es único, no solo le da recetas a los algoritmos, sino que le enseña cómo crear sus propios algoritmos para nuevos problemas. También hay un artículo del mismo autor que describe el enfoque http://akira.ruc.dk/~keld/teachi

desea estudiar estructuras de datos y algoritmos, así como pruebas de corrección y de tiempo para ejecutar y máx. memoria ocupada como funciones de dimensiones problemáticas. Sugiero los algoritmos de Coursera 1 y 2 hechos por Standford. La programación dinámica es un ejemplo de lo que puede hacer con algoritmos para optimizar la búsqueda de fuerza bruta a través del espacio de soluciones (lo que sería un retroceso).

Hace años me uní (suscribí) a la Asociación para Máquinas de Computación, también conocida como ACM. Sacaron una revista mensual y una sección era “ALgoritmos”. Eso contenía programas en Algol, un lenguaje estructurado y fácil de entender. Aprendí mucho de ellos.

Grab The Algorithm Design Manual, Steven P. Skiena. Tiene muchos ejercicios.

More Interesting

¿Existe un libro que enseñe algoritmos, estructuras de datos y otros conceptos básicos de informática de una manera divertida?

Cómo escribir un programa para encontrar la frecuencia de la presencia de un elemento en una matriz en C ++

¿Cómo fue Alkhwarizm 2013 por IIIT Allahabad?

¿Cómo funciona un algoritmo de bogosort cuántico?

Dada una matriz con 100 elementos (números del 0 al 99), si saco un elemento aleatorio, ¿cómo encontrarías el que saqué? ¿Cómo resolvería esto si 1: la matriz está ordenada o 2: la matriz no está ordenada?

¿Qué es un algoritmo de programación dinámica que podría resolver el problema a continuación?

¿Qué tan bien funciona el algoritmo NativeTrack de AppsFlyer?

¿Qué tan preciso es el algoritmo de predicción de personalidad de Faception?

¿Necesita algoritmos para la interfaz de usuario?

¿Es posible desarrollar un algoritmo que pueda hacer predicciones perfectas en el mercado de valores?

¿Cuáles son las situaciones en las que uno puede usar ArrayList y otras situaciones para usar solo LinkedList?

¿Qué sucede cuando hay un ciclo negativo en el gráfico?

¿Hay diferentes algoritmos para diferentes lenguajes de programación?

¿Cómo resuelven los árboles de segmentos el problema de apuñalamiento (todos los intervalos que contienen un punto dado)?

Dada una expresión matemática 2 + 4 * 6 + 8-11, ¿cómo la colocaría entre corchetes de manera que proporcione el valor máximo? ¿Es posible codificar esto?