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