Knapsack Problem has many variations. One popular variation is 0-1 Knapsack Problem. This problem occurs in many ways in real-life. So, solution for this problem is of interest. The Exhaustive Search approach (Brute Force) yields an exponential running time. This paper explains Dynamic Programming algorithm to solve this problem that results improvement in the solution running time. The paper also explain the enhancement of the traditional bottom-up Dynamic Programming approach with the combination of the Top-Down approach that results a technique called Memory Functions