Longest Increasing Subsequence
opt[0] = 0 sol[0] = [] for k = 1 to A.length opt[k] = 1 sol[k] = [A[k]] for i = 1 to k-1 if A[i] < A[k] and opt[k] < opt[i] + 1 opt[k] = opt[i] + 1 sol[k] = sol[i] + [A[i]] best = 1 for j = 2 to A.length if opt[best] < opt[j] best = j