## Dynamic Programming Theory

Introduce what is and when to use dynamic programming.

Introduce what is and when to use dynamic programming.

Introduce a classic dynamic programming problem: Longest Common Subsequence (LCS)

Introduce a classic dynamic programming problem: The Knapsack Problem

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

Help the robot to find all the unique paths from (0,0) to (m,n)

Help the robot to find all the unique paths from (0,0) to (m,n) with obstacles

Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.

You are climbing a stair case. It takes n steps to reach to the top.

Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.

Determine the maximum amount of money you can rob tonight :)

This is an extension of the previous problem: House Robber.

Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.

Given an array for which the ith element is the price of a given stock on day i, design an algorithm to find the maximum profit if you were only permitted to complete at most one transaction.

Given an array for which the ith element is the price of a given stock on day i, design an algorithm to find the maximum profit if you may complete as many transactions as you like.

Given an array for which the ith element is the price of a given stock on day i, design an algorithm to find the maximum profit if you may complete at most 2 transactions.

Given an array for which the ith element is the price of a given stock on day i, design an algorithm to find the maximum profit if you may complete at most k transactions.

Given an array for which the ith element is the price of a given stock on day i, design an algorithm to find the maximum profit if you need to cooldown before another purchase.