Dynamic Programming 0-1 Knapsack Unbounded Knapsack Longest Common Substring Matrix Chain Multiplication Binary Tree Problem