Programming Contest problems come in many shapes and sizes. One step that can help
in successfully solving a problem is to determine the nature of that problem. One
of the easiest ways for people to do this is to make up a list of categories and
then decide which category(s) the problem fits into. So here is a first cut in making
a list of categories.
| Category | Subcategory | Distinguishing Features |
| Geometry | ||
| Packing Problems | Fitting some shaped item into another shaped item | |
| 2-D | Can 2-D object X fit in/pass through 2-D object Y | |
| 3-D Perspective | What is visible, are two items the same | |
| Rotation/Transformation | What happens when a series of rotations/transformations are applied to an object | |
| Lines | Intersection of lines | |
| Curves | Circles, Ellipses, Cones, ... | |
| Triangles | Circumference, area, Right, Isosceles, Equilateral, Scalene, Non-Euclidean | |
| Quadrilaterals | Square, rectangle, parallelogram, rhombus, trapezoid | |
| Polygons | Working with many sided figures | |
| Math | ||
| Combinations/Permutations | Solve some puzzle that requires calculation/production of a combination/permutation of items | |
| Simultaneous Equations | Solve a situation with N unknowns (inequalities also) | |
| Algebraic | Problems that require use of algebra to solve | |
| Number Theory | Problems that require knowledge of number theory to solve | |
| Trig Relations | Problems that require trig relationships to solve | |
| Numerical Relationship | Primes, Pascal's triangle, Fibonacci Series, Factorial | |
| Trig Relations | Problems that require trig relationships to solve | |
| String | ||
| String Containment | Is some string(s) contained in another string(s)/matrix | |
| String Manipulation | Heavy string coding: reversing strings, substringing, ... | |
| Parsing | Problems that rely on parsing input data | |
| Algorithmic | ||
| Sorting/Searching | Problems that need data sorted or searched | |
| Data Structures | Problems that require understanding of specific data structures to solve | |
| Backtracking | Problems that require you to be able to backtrack to solve | |
| Network | Minimum/maximum distance... | |
| Graph Problems | Problems that require you to be able to traverse and translate graphs to solve | |
| Grids | XY grids | |
| Flood Fill | Filling a bounded region | |
| Recursive | Recursion -- cool | |
| Greedy Algorithms | Solve problem by taking best option at each possible step | |
| Other | ||
| Brute Force | Just code away | |
| Inventory | Classic start with a list, add/remove/modify list, display list of state whether operations are possible | |
| Dynamic Programming | Can you think sideways... |
Examples of problems that fit into categories. I have solved the problems with an asterrisk (*) and an exclamation point (!) means not solved by me.
| Category | Sub-Category | Problems |
| Math | Miscellaneous |
|
| Big Integer |
| |
| Clock Aritmetic Modulus |
| |
| Divisibility Related |
| |
| Factorials |
| |
| Hashing |
| |
| Number Theory |
| |
| Prime Related |
| |
| Dynamic Programming | Miscellaneous |
|
| Longest Increasing Subsequence |
| |
| Longest Common Subsequence |
| |
| Flood Fill |
| |
| Computational Geometry | Miscellaneous |
|
| Packing |
| |
| Graph | Miscellaneous |
| Shortest Path |
|
| Simulation |
| |