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.
Problem 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 acombination/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 tht require knowledge of number theory to solve |
| Trig Relations |
Problems tht require trig relationships to solve |
| Numerical Relationship |
Primes, Pascal's triangle, Fibanacci 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 tos 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... |