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... |