¿Cómo debería resolver mejor los problemas de programación?

Supongo que te estás apresurando a escribir código en lugar de analizar el rompecabezas o que tu análisis es débil, de lo contrario no tendrías este problema.

Para evitar darse cuenta de que ha abordado el problema desde el ángulo incorrecto cuando ya casi ha terminado, debe analizar el problema en la medida en que pueda prever el problema antes de comenzar la programación.

Esto no es fácil y requiere mucha práctica, pero si no sabe por dónde comenzar, le daré algunos consejos 🙂

Hasta que comprenda el núcleo del problema, todos los problemas serán extremadamente difíciles. La única razón por la que un problema parece ser más difícil que el otro es que obviamente es mucho más fácil analizar un problema con pocos parámetros en mente que un problema más complejo.

Si bien es posible que no piense que divide un problema en “microproblemas” individuales, su cerebro sí lo hace, solo necesita ser consciente de lo que hace en segundo plano (es más fácil decirlo que hacerlo)

Cuando me acerco a un nuevo problema, generalmente:

  1. Escribe el objetivo del algoritmo. Si no puede especificar el objetivo, no ha entendido el problema que está tratando de resolver.
  2. Al igual que su cerebro analiza problemas más pequeños para usted, debe analizar problemas más complejos para el cerebro. Tu cerebro es INCREÍBLE cuando se trata de resolver problemas menos complejos, ¡deja que haga su trabajo! Cuanto más pequeño sea cada micro problema, más fácil será para su cerebro procesarlo, ¡tómese su tiempo para realmente resolver el problema tanto como sea posible!
  3. Averigua cómo vas a resolver cada micro problema, esto no será tan difícil si hiciste el paso 2 a fondo. Si encuentra más de 1 solución para uno o más de los micro problemas, escríbalos todos.
  4. Una vez que se hayan definido todos los microproblemas, ordénelos en pequeños grupos de microproblemas relacionados entre sí, escriba por qué los microproblemas de cada grupo están relacionados entre sí, así como la relación entre cada problema, esto es importante en para obtener una mejor visión general y para el siguiente paso.
  5. Cada grupo ahora contiene un par de micro problemas que son responsables de una tarea específica y / o parte de una tarea más grande. Defina qué grupos están relacionados entre sí y colóquelos en un grupo más grande y especifique qué contiene, así como las relaciones entre cada grupo. Como probablemente haya adivinado, este proceso debe repetirse hasta que termine con algo similar a un sistema de directorio en una computadora (¡NOTA! Es posible que algunos micro problemas o grupos se superpongan con otros grupos, lo cual es el punto de este proceso. te obliga a pensar en estos problemas antes de pasar horas, días o semanas codificando)
  6. En este punto, tendrá un mapa de especificaciones extremadamente detallado que su cerebro realmente podrá procesar con facilidad 🙂

Si desea mejorar sus habilidades de resolución de problemas como programador, le recomendaría que escriba un algoritmo de solución de Suduko utilizando esta técnica.

El problema de Suduko ofrece muchas formas diferentes de estructurar sus datos y necesita tener un plan bien pensado para eliminar tantas operaciones del algoritmo como sea posible. ¡Escribir un solucionador de suduko fue lo más efectivo para mí para evolucionar en la resolución de problemas de programación!

Buena suerte 🙂

Entrenando más.

More Interesting

¿Qué libro de algoritmos introductorios debería leer una mente matemáticamente inclinada?

¿Cuál es el mejor método de clasificación para usar si solo un elemento está fuera de servicio?

¿Cuáles son las ventajas de un árbol AVL?

¿Qué algoritmos gráficos (10-15, tal vez) sugeriría que hicieran bien en la programación competitiva?

¿Cuál es el mejor método para resolver un problema de 'cuál es el siguiente número en esta secuencia'?

¿Son patentables los algoritmos de aprendizaje automático?

¿Cuál es el número de elementos comunes en dos conjuntos de permutación?

¿Cuál es la diferencia entre los algoritmos Reheap up y Reheap down?

¿Qué define una solución óptima con respecto al problema de la mochila 0-1?

¿Alguna vez has usado los algoritmos que has aprendido en la universidad?

¿Qué compañías necesitan algoritmos de flujo óptico fuertes?

¿Están sobrevalorados los algoritmos, en comparación con la escritura de software limpio, escalable y de fácil mantenimiento? Sé mi parte de algoritmos y acerté mis entrevistas. Pero en la industria, se trata de cumplir con los requisitos de software y administrar la base del código.

En la complejidad temporal de un algoritmo, ¿por qué puede considerarse útil que una operación elemental tome "tiempo unitario"?

¿Cuál es el propósito de estudiar pequeñas mejoras (como usar dos hilos o evitar la basura) mientras puedo reducir la complejidad de los algoritmos?

¿Soy solo yo o el algoritmo recursivo de Fibonacci es brillantemente complejo?