Dynamic Programming

Factorial using DP

Memoization

/*package whatever //do not write package name here */

import java.io.*;
import java.util.*;
import static java.lang.System.out;

class GFG {

    static int[] memo;

    static int fib(int n) {
        if (memo[n] == -1) {
            int res;

            if (n == 0 || n == 1)
                return n;

            else {
                res = fib(n - 1) + fib(n - 2);

            }

            memo[n] = res;

        }

        return memo[n];
    }

    public static void main(String[] args) {

        int n = 5;

        memo = new int[n + 1];

        Arrays.fill(memo, -1);

        out.println(fib(n));

    }
}

Tabulation

Longest Common Subsequence (Part 1)

Memoization

Tabulation

Variation of LCS

  • Diff Utility

  • Min. insert or delete to convert s1 to s2

  • Short common sequence

  • Longest Palindrome Sub sequence

  • Longest Repeating Sub sequence

  • Printing LCS

Coin Change Count Combinations

Edit Distance Problem

Edit Distance Problem DP

Longest Increasing Subsequence Problem

Longest Increasing Subsequence O( nlog(n) )

Variation of LIS

  • Minimum deletions to make array sorted

  • Maximum Sum Increasing Sub sequence

  • Max Length Bitonic Solution

  • Building Bridges

  • The longest chain

Maximum Cuts

Minimum coins to make a value

Minimum Jumps to reach at end

0-1 knapsack problem

0-1 knapsack problem DP Solution

Optimal Strategy for a Game

Egg Dropping Puzzle - Part 1

Egg Dropping Puzzle - Part 2

Count BSTs with n keys

A recursive structure is discussed, then a dynamic programming solution is discussed, finally relation with Catalan Numbers.

Maximum sum with no two consecutive

DP-Code in O(1) space

DP-Code in O(n) space

Subset Sum Problem (Recursive Solution)

Subset Sum Problem (DP Solution)

Matrix Chain Multiplication

Matrix Chain Multiplication (DP Solution)

Palindrome Partitioning

Allocate Minimum Pages (Naive Method)

Allocate Minimum Pages (DP Solution)

Last updated