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

The statements and opinions included in these pages are those of only. Any statements and
opinions included in these pages are not those of *Louisiana
State University* or the *LSU* Board of Supervisors.

© 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Isaac Traxler