home

1 Getting Started (Review of C++)
 1.1 I/O
 1.2 I/O Formatting
 1.3 I/O Formatting through cstdio
 1.4 Aliased Types
 1.5 Global Functions
 1.6 Classes
 1.7 Suggested Problems
 1.8 References
2 Data Structures (and STL)
 2.1 Standard Template Library (STL) for C++
 2.2 Templates
 2.3 Stacks (Last-In-First-Out)
 2.4 Queues (First-In-First-Out)
 2.5 Priority Queues
 2.6 Sets
 2.7 Suggested Problems
 2.8 References
3 Strings
 3.1 Character Sets
 3.2 Unicode Storage Encoding Forms
 3.3 C++ String Library Functions
 3.4 C Library String Functions
 3.5 Suggested Problems
4 Sorting
 4.1 A STL Algorithm
 4.2 Suggested Problems
5 Arithmetic and Algebra
 5.1 Arithmetic Operations
 5.2 Random Numbers
 5.3 Number Representations
 5.4 Suggested Problems
6 Combinatorics
 6.1 Counting Rules
 6.2 Binomial Coefficients
 6.3 Recurrence Numbers
 6.4 Suggested Problems
7 Number Theory
 7.1 Public Keys
 7.2 Prime Numbers
 7.3 Euclid’s Algorithm
 7.4 Modular Arithmetic
 7.5 Suggested Problems
8 Greedy Algorithms
 8.1 Coin Change
 8.2 Egyptian Fractions
 8.3 Job Scheduling
 8.4 0/1 Knapsack
 8.5 Huffman Code
9 Backtracking
 9.1 Background
 9.2 The Queens Problem
 9.3 Convex Hull
 9.4 Generating Permutations
 9.5 Demos
 9.6 Suggested Problems
10 Graph Algorithms
 10.1 Types of Graphs
 10.2 Representations of Graphs
 10.3 Breadth-First Traversal
 10.4 Depth-First Traversal
 10.5 Topological Sorting
 10.6 Prim’s Minimal Spanning Tree Algorithm
 10.7 Dijkstra’s Single-Source Shortest Path Algorithm
 10.8 Kruskal’s Minimal Spanning Tree Algorithm
 10.9 Union-Find Algorithm
 10.10 Suggested Problems
11 Divide-and-Conquer Algorithms
 11.1 Merge Sort
 11.2 Quick Sort
 11.3 Tiling with L-Grouped Tiles
 11.4 Strassen’s Matrix Multiplication
12 Dynamic Programming
 12.1 Fibonacci Numbers
 12.2 Coin Change
 12.3 Matrix Chain Multiplication
 12.4 Longest Common Substring
 12.5 Approximate String Matching (Edit Distance)
 12.6 All Pairs Shortest Paths (Floyd-Warshall)
 12.7 Suggested Problems
13 Grids
 13.1 Rectilinear Grids
 13.2 Dual Graphs
 13.3 Triangular Grids
 13.4 Hexagonal Grids
 13.5 Topological Grids
 13.6 Functionality
 13.7 Scan Converting Lines
 13.8 Scan Converting Circles
 13.9 Scanline Fill Polygons
 13.10 Suggested Problems
14 Geometry
 14.1 Lines
 14.2 Triangles
 14.3 Trigonometric Functions
 14.4 Circles
 14.5 Suggested Problems
15 Computational Geometry
 15.1 Turning Directions
 15.2 Convex Hull: Divide and Conquer
 15.3 Convex Hull: QuickHull
 15.4 Closest Pair
 15.5 Polygon Triangulation
 15.6 Suggested Problems