divide and conquer this approach to problem-solving is just as its name suggests to solve (conquercertain problemsthis algorithm divides the problem into subproblems identical to the original problem that can easily be solved solutions to the subproblems are combined in such way that the final solution is the solution of the origin problem the way in which the problems are broken down into smaller chunks is mostly by recursion we will examine this technique in detail in the upcoming sections some algorithms that use this technique include merge sortquick sortand binary search dynamic programming this technique is similar to divide and conquerin that problem is broken down into smaller problems in divide and conquereach subproblem has to be solved before its results can be used to solve bigger problems by contrastdynamic programming does not compute the solution to an already encountered subproblem ratherit uses remembering technique to avoid the recomputation dynamic programming problems have two characteristicsoptimal substructure and overlapping subproblem we will talk more on this in the next section greedy algorithms for certain category of problemsdetermining the best solution is really difficult to make up for the lack of optimal solutionwe resort to an approach where we select out of bunch of options or choices the closest solution that is the most promising in obtaining solution greedy algorithms are much easier to conceive because the guiding rule is for one to always select the solution that yields the most benefit and continue doing thathoping to reach perfect solution this technique aims to find global optimal final solution by making series of local optimal choices the local optimal choice seems to lead to the solution in real lifemost of those local optimal choices made are suboptimal as suchmost greedy algorithms have poor asymptotic time complexity