DSA-in-December

✨ Day 27: Dynamic Programming Level-1 ✨

📌 Dynamic Programming is a technique in computer programming that helps to efficiently solve a class of problems that have overlapping subproblems and optimal substructure properties. If any problem can be divided into subproblems, which in turn are divided into smaller subproblems, and if there are overlapping among these subproblems, then the solutions to these subproblems can be saved for future reference. In this way, the efficiency of the CPU can be enhanced. This method of solving a solution is referred to as dynamic programming. Such problems involve repeatedly calculating the value of the same subproblems to find the optimum solution.

✏️ 𝗙𝗼𝗿 𝗯𝗲𝘁𝘁𝗲𝗿 𝘂𝗻𝗱𝗲𝗿𝘀𝘁𝗮𝗻𝗱𝗶𝗻𝗴 𝗿𝗲𝗳𝗲𝗿 𝗳𝗼𝗹𝗹𝗼𝘄𝗶𝗻𝗴 𝗮𝗿𝘁𝗶𝗰𝗹𝗲𝘀 ;

  1. https://www.geeksforgeeks.org/dynamic-programming/
  2. https://www.cprogramming.com/tutorial/computersciencetheory/dp.html
  3. https://www.programiz.com/dsa/dynamic-programming
  4. https://www.javatpoint.com/dynamic-programming
  5. https://stackabuse.com/dynamic-programming-in-java/
  6. https://medium.com/geekculture/demystifying-dynamic-programming-with-java-part-i-9e501d94bfe6

📽️ 𝗧𝘂𝘁𝗼𝗿𝗶𝗮𝗹 𝗟𝗶𝗻𝗸𝘀;

  1. https://youtube.com/playlist?list=PLgUwDviBIf0qUlt5H_kiKYaNSqJ81PMMY
  2. https://youtu.be/sPeKpctCL-c
  3. https://youtu.be/sPeKpctCL-c
  4. https://youtu.be/5dRGRueKU3M
  5. https://youtu.be/-NTaXJ7BBXs

👨‍💻 𝗤𝘂𝗲𝘀𝘁𝗶𝗼𝗻𝗶𝗻𝗴 𝗥𝗼𝘂𝗻𝗱: 👇

  1. https://leetcode.com/problems/can-make-arithmetic-progression-from-sequence/
  2. https://leetcode.com/problems/maximum-bags-with-full-capacity-of-rocks/
  3. https://leetcode.com/problems/maximum-product-subarray/
  4. https://leetcode.com/problems/number-of-provinces/
  5. https://leetcode.com/problems/path-with-maximum-probability/