¿Qué debo hacer para fortalecer mis habilidades de resolución de problemas en la programación?

Para resolver un problema primero, debe comprender el problema con variables menos desconocidas. Si no puedes entender el problema no puedes resolverlo. Nunca asuma ningún aspecto al escribir un programa porque una máquina no puede asumir nada. Una vez que comprenda el problema, puede trabajar en el desarrollo de la arquitectura de la solución.

Analiza estos puntos.
1. ¿Qué tienes en la mano (entrada, conocimiento)?
2. Evalúe todas las variables asociadas con un problema (condiciones, etc.)
3. Lo que necesitas para resolverlo. (Se desconoce cuál se debe identificar, podría ser conocimiento, variables adicionales asociadas con el problema)

Los problemas de la práctica de programación tienen todo lo que necesitas. es solo que podrías estar pasando por alto algunos puntos.

Finalmente, necesitas ser paciente para ser un programador. Luchar con un problema hasta que se resuelva. Resuélvelo con el más mínimo enfoque, luego mejora. Nunca renunciar a un problema. Una vez que pruebes la victoria después de mucha lucha, la prisa, la felicidad, lo alto animarán al programador que está dentro de ti a querer más. Entiendo que la programación puede ser un poco frustrante, sin embargo, siempre tenga en cuenta que usted es el que tiene cerebro, usted es el maestro, una máquina es tonta. No tiene autoridad sobre ti, ni siquiera para frustrarte.

Sea perezoso para hacer trabajos repetitivos, resuelva trabajos repetitivos con programación. Resuelva un problema con múltiples soluciones, por ejemplo 2 + 2 = 4, así es – 2938 + 2942 = 4.

A2A.

Desarrollar cualquier tipo de habilidad para resolver problemas requiere una buena cantidad de tiempo y práctica, y lo que es más importante, de la manera correcta. Aquí hay un posible enfoque:

1) Fase de aprendizaje: cuando vea un problema nuevo, dedique algo de tiempo a comprender y visualizar el escenario. Luego, verifique todos los enfoques que se pueden usar para resolver el problema: programación codiciosa, dinámica, división y conquista, etc. No mire las soluciones hasta que haya agotado todas sus ideas: siga intentando. Para cada enfoque, ver cómo se escala. La mayoría de estos no podrán resolver el problema en general o no se escalarán bien. Dependiendo de sus soluciones, es posible que desee codificar algunos enfoques que se le ocurran.

Si no puede encontrar una solución, revise la solución provista. Analízalo con cuidado. Vea por qué funciona, cómo se escala, etc. Después de estudiarlo, intente reproducirlo por su cuenta. Puede ser codificado. Además, dedique un poco de tiempo para averiguar en qué se diferencia esto de los enfoques que estaba tratando. ¿Qué información adicional utiliza esta solución para obtener la respuesta que no estaba utilizando? Esto le ayudará a aplicar esta solución a un problema similar en el futuro.

2) Fase de fortalecimiento: a menudo, es importante recordar las técnicas que se encuentran durante la fase de aprendizaje. Durante la fase de aprendizaje, debe marcar los problemas que querría volver a examinar más adelante. Luego, una vez que haya probado suficientes problemas en la fase de aprendizaje, vuelva a estos problemas marcados y vuelva a intentarlos. Si puede encontrar la solución rápidamente, desmarque. Repita esto varias veces hasta que haya dominado la mayoría de estos problemas, dejando espacios suficientes entre los dos para que pueda olvidar las soluciones exactas.

3) Fase de terminación: Algún tiempo después de que haya completado la fase de fortalecimiento, vuelva a revisar los problemas una vez más. Lea cada problema e intente recordar la solución dentro de los 30 segundos aproximadamente. No uses papel, solo trata de recordar las ideas clave. Si hay problemas para los que no puede recordar la solución, márquelos, verifique las soluciones y repita esta fase para detectar problemas marcados después de algún tiempo.

Una vez que complete esta fase para un conjunto de problemas, elija un nuevo conjunto de problemas y repita. Gradualmente podrá ver mejoras en sus habilidades para resolver problemas.

(Fuente: respuesta de Prashant Sharma a las sugerencias sobre cómo obtener un rango inferior a 1000 en JEE)

Hola a todos,

Vamos a ver cómo uno puede mejorar sus habilidades de resolución de problemas.

Aprende habilidades y técnicas creativas para resolver problemas. También una discusión sobre el proceso y la teoría detrás de la resolución de problemas de gran alcance y el pensamiento creativo.

Cuando empiezas a ver un problema y parece muy simple, no entiendes realmente la complejidad del problema. Entonces te metes en el problema y ves que es realmente complicado, y se te ocurren todas estas soluciones complicadas. Eso es una especie de medio, y ahí es donde la mayoría de la gente se detiene …

Pero la gran persona seguirá y encontrará la clave, el principio subyacente del problema, y ​​propondrá una solución elegante y realmente hermosa que funcione.

Cuando estás resolviendo problemas, estás haciendo una de dos cosas. O estás arreglando algo que está roto, o estás construyendo algo. Si estás construyendo algo, podría ser algo completamente nuevo, o podría ser algo mejorado. Siga leyendo para descubrir cómo hacer esto con eficacia.

Algunas personas son naturalmente buenas para resolver problemas. Otros no (todavía). La mayoría están en algún punto intermedio. Mucha gente subestima lo bueno que es para resolver problemas. Muchos no se dan cuenta de cuánta resolución de problemas hacen en realidad. Los problemas están a nuestro alrededor y los resolvemos todo el tiempo, ya sea algo tan simple como decidir si poner esa manta extra en la cama esta noche, o algo un poco más difícil, como construir un avión con la chatarra vieja que has encontrado en el garaje.

Donde sea que esté, puede mejorar sus habilidades de resolución de problemas. Con la mentalidad correcta, la resolución de problemas no es tan difícil, y es bastante divertida. Arreglar cosas y construir cosas siempre es una tarea gratificante. Cuanto más resuelvas tus problemas, mejor obtendrás también.

Pasos para convertirse en un buen solucionador de problemas:

  1. La actitud correcta
  2. Se de mente abierta
  3. Ser inquisitivo
  4. Haga las preguntas correctas
  5. Asegúrese de que está resolviendo el problema correcto
  6. Evaluar la situación
  7. Crear una hipótesis
  8. Pon a prueba tu hipótesis
  9. Enjuague y repita

Entonces este es el proceso desde el cual puede ser un mejor solucionador de problemas.

“A veces el problema que ves inicialmente no es el problema en absoluto. Es un síntoma del problema real. Si resuelves el síntoma, no estás resolviendo el problema real, solo le pones una curita ”.——— Steve Jobs

Espero que esto pueda ayudarte.

Gracias.

La resolución de problemas es la raíz de la programación.
Programamos para resolver problemas.

Supongo que los pasos que paso son los siguientes:

  1. Analizar el problema.
    ¿Cuál es el problema real? Desglosa los pasos que tomarías para resolver el problema sin el programa. Puede ser un centenar de pasos. Podría ser la fuerza bruta. No te preocupes por la elegancia todavía.
  2. Plan.
    Averigüe cómo puede hacer que su programa haga lo que acaba de analizar.
  3. Diseño.
    Diseñe su programa como un diagrama, UML y / o en pseudocódigo.
  4. Rellenar los espacios en blanco.
    Escribe el código real.
  5. Prueba.
    ¿Funciona? Por qué no? Si no es así, vuelva al paso 1, esta vez con su código.
  6. Refactor
    Mire su código y vea cómo puede recortarlo, hacerlo más simple o más elegante. También puede ayudar si entiendes alguna función matemática que podría usarse para simplificar el proceso en lugar de golpearlo con un martillo.

Fui entrenador de nuestro equipo durante varios años. Necesitas hacer un par de cosas.

1. Todos los problemas del concurso de programación de ACM están en línea en https://icpc.baylor.edu/worldfin… . Trabajalos todos 🙂

2. Hay dos partes para resolver problemas computacionales: estructura de datos y algoritmo.

  • Algunos problemas te superan en la cabeza con la estructura de datos primero; Algún algoritmo primero.
  • Prácticamente todas las estructuras de datos son algún tipo de gráfico, pero pueden ser más felices como matrices, punteros o cadenas de bits … Aprende a escuchar lo que el problema te dice.
  • Los algoritmos son secuencias de bloques cortos de código para implementar (en una estructura de datos) transformaciones de información. Descomponer, descomponer, descomponer.

3. Los novatos nunca piensan en las pruebas; Los expertos se obsesionan con las pruebas. “Si no puedes probarlo, no lo entiendes”. Empieza aquí Desarrollo guiado por pruebas

Espero que las personas con más experiencia que yo puedan responder a su pregunta. Esto es lo que suelo hacer:

Póngase metas para cada semana . Puede comenzar resolviendo 2 o 3 problemas cada semana, dependiendo de sus limitaciones de tiempo. . Comience por resolver los sencillos que se enumeran en los sitios web más populares (topcodder, hackerrank, etc.).

Participe en los concursos de programación Hay muchos de ellos cada año, tanto en línea como en el sitio. No importa si terminas el último o no ganas nada, solo hazlo. Gradualmente irás mejorando y conseguirás más confianza.

Aprenda sobre las estructuras de datos Debe saber cómo funcionan las estructuras de datos y cómo implementarlas por tí mismo. ¿Por qué? Simplemente porque los necesita para resolver problemas de manera eficiente y son el núcleo de cada software de computadora. Algunas estructuras de datos imprescindibles son:

Arrays / Arraylists
Mesas de hash
-Muchísimo
-Stacks y colas
-Trenza
-Gráficos
-Vectores

Los algoritmos de búsqueda y ordenamiento de algoritmos son especialmente útiles. Asegúrese de saber cómo implementar:
-Ordenación rápida
-Merge ordenar
-Tipo de inserción
-Búsqueda binaria
-Bastth-first search
-Profundidad-primera búsqueda

Practique, practique, practique. No hay nada mejor que simplemente ensuciarse las manos y comenzar a programar, aprenderá mucho en el camino.

“La práctica hace la perfección”.

La mejor manera de mejorar en la resolución de problemas es resolver problemas y desafiarse con diferentes problemas. Una vez que haya dominado los problemas “fáciles”, ¡no solo siga haciéndolos! Pasa a los desafíos que son un poco más difíciles.

Algunos buenos lugares para encontrar problemas son:
Juez en línea de la UVa
Sobre – Proyecto Euler

¡Los dos que tienen problemas que varían en dificultad y son excelentes para jugar! ¡Lo importante a recordar es que la programación es divertida!

Estudia matemáticas.

Para fortalecer sus habilidades de resolución de problemas, debe ser bueno en matemáticas y tener una buena capacidad lógica y de razonamiento.

La mayoría de las veces, una vez que entiendes correctamente la afirmación del problema, todo se reduce a las matemáticas. Entonces, cuanto mejor seas con las matemáticas, cuanto antes llegues a la solución.

Hay dos formas de construir intuiciones fuertes para resolver problemas. Lo primero es leer. Puede comenzar con la teoría de los números, la combinatoria, la probabilidad y la geometría computacional, por nombrar algunos. Poco a poco, al pasar a problemas difíciles, tendría que leer mucho nuevos algoritmos.

La otra forma es practicar hasta que haya cubierto la mayoría de las situaciones que puede encontrar. Ciertamente no puedes cubrir todo.

Pasa el tiempo con programadores que son más inteligentes que tú.

Puede ser en un laboratorio universitario, trabajo, conferencias…. pero probablemente no en línea. Eventualmente, la conversación se centrará en lo que la gente está trabajando y usted puede desechar su interesante problema actual. Probablemente obtendrá varias soluciones que no se le habían ocurrido.

Nunca he visto un foro en línea que pueda duplicar lo que un programador más capacitado puede hacer en la parte posterior de una servilleta después de un par de cervezas. Sal y habla con la gente. Funciona.

Creo que hay tres formas de acceder a ella.
Primero necesitas estudiar matemáticas discretas. Le dice cómo abstraer los problemas reales en problemas de matemáticas.
Luego debes practicar más. La ‘práctica’ significa hacer más ejercicios y pensar la razón por la que no puedes hacerlo. Recuerde, cuanto más piense y resuma, mejor se volverá. Además, debe estar tranquilo, no
ser un error, puede hacer que aprendas menos eficazmente.
Por último, pero no menos importante. Debes aprender la estructura de datos básica y el algoritmo. Te enseña cómo se organizan los datos en la computadora.

Intente aprender la estructura de datos básica y aplíquela a problemas que intenten resolverlos. Hay muchos problemas disponibles en Geekforgeeks, Codenation, Codechef, etc. que pueden ayudarlo a mejorar sus técnicas de resolución de problemas. Los problemas se resuelven de una forma u otra, pero con la ayuda de la estructura de datos, podrá identificar una solución improvisada y eficiente para el problema. De eso se trata la buena programación.

Realmente, la única respuesta es “práctica”. Elige problemas. Intenta resolverlos. Problemas reales, quiero decir, no juguetes con respuestas específicas.

Más allá de eso, todos somos diferentes. Algunas personas lo hacen bien mirando las soluciones de otras personas. Otros necesitan trabajar hasta que estén seguros de que están atascados. Otros necesitan construir lentamente.

Pero si no estás probando cosas nuevas, será difícil.

Mejore los conceptos básicos y fundamentales de la programación. Si desea mejorar el lenguaje C, primero debe mejorar las habilidades de sus comandos (como “for”, “do”, etc.) y encuentra que la limitación de cada comando marca la diferencia entre comandos. Resuelva la aptitud con algoritmo (Con lógica de programación).
Resuelve el ejercicio de cualquier libro de programación con un enfoque diferente.

Deseche los libros y el código!

Piensa en el problema de una manera intuitiva. Si no puedes dar con un ejemplo de la vida real, entonces esfuérzate. Una vez que tenga un ejemplo de la vida real, trabaje con una solución conceptual antes de desglosar el código o las matemáticas.

La teoría y las herramientas están desplegadas para atender problemas prácticos.

Vea la respuesta de Marcas Neal a ¿Cómo los programadores experimentados y avanzados resuelven problemas que no saben cómo comenzar?

La mejor manera de mejorar sus habilidades de resolución de problemas es resolver problemas, muchos problemas. Ah, y por cierto cometerás muchos errores, esto es normal y sirve para ser una gran oportunidad de aprendizaje. Un día una persona me preguntó: “Eric, ¿cómo sabes tanto acerca de las computadoras?” Y respondí: “Porque puedo cometer errores tres veces más rápido que el humano normal”. 🙂

El primer paso y el más básico es asegurarse de que comprende el problema. Míralo desde múltiples ángulos (piénsalo de diferentes maneras).

En segundo lugar, cuando un problema parece demasiado grande, busque un rincón débil que sepa cómo solucionar, luego busque otra pieza pequeña que sepa cómo solucionar hasta que no quede nada que necesite solución.

Es “Practicar y Desplegar”.
Hay muchos sitios web de programación competitivos, puede elegir sus problemas desde allí y practicar y luego participar en los concursos que le dirán cómo se destaca entre la multitud.

Te puedo decir cómo aprendí (hace años):

Ayudar a un gran número de personas con sus problemas. Trabaje con alguien más con más experiencia que usted para ayudarlo a rescatarla cuando se le pase la cabeza.

Esto cumple dos funciones:

  • Te enseña a aprender cómo escanear problemas comunes rápidamente
  • Mejora tus habilidades de comunicación (siempre que la gente no se rinda de ti con disgusto).

No estoy seguro de que sea una forma particularmente eficiente, pero me pagaron por hacerlo (hace mucho cuando).

No creo que haya alguna regla fundamental para mejorar sus habilidades de resolución de problemas para la programación. Intenta contribuir al código abierto tanto como puedas. Hay muchos sitios web que albergan problemas y puedes intentar resolverlos como HackerRank, TopCoders, etc.

Practique los problemas en varios sitios de programación competitivos y si no puede resolverlos, vea las distintas soluciones a ese problema, trate de pensar cómo esa persona se imaginó esta solución.

– Escoja papel y lápiz y ejecute algunos ejemplos sobre cómo lo resolvería manualmente.

– Puede ser un problema diferente primero

– Puede ser una solución aproximada primero.

– Puede ser un algoritmo incorrecto primero (la codicia suele ser incorrecta)

– Probar el proyecto de euler y el campamento de código libre.

– hacer cursos en línea; Hice grandes progresos solo estar haciendo una docena de ellos