
The Algorithm Design Manual

Strings are likely the object in question whenever you are dealing with “text,” “characters,” “patterns,” or “labels.”
Steven S. Skiena • The Algorithm Design Manual
Learning to think recursively is learning to look for big things that are made from smaller things of exactly the same type as the big thing.
Steven S. Skiena • The Algorithm Design Manual
Recursive descriptions of objects require both decomposition rules and
Steven S. Skiena • The Algorithm Design Manual
Permutations are likely the object in question whenever your problem seeks an “arrangement,” “tour,” “ordering,” or “sequence.”
Steven S. Skiena • The Algorithm Design Manual
Order does not matter in subsets
Steven S. Skiena • The Algorithm Design Manual
Points are likely the object in question whenever your problems work on “sites,” “positions,” “data records,” or “locations.”
Steven S. Skiena • The Algorithm Design Manual
Trees are likely the object in question whenever your problem seeks a “hierarchy,” “dominance relationship,” “ancestor/descendant relationship,” or “taxonomy.”
Steven S. Skiena • The Algorithm Design Manual
Polygons and polyhedra are likely the object in question whenever you are working on “shapes,” “regions,” “configurations,” or “boundaries.”
Steven S. Skiena • The Algorithm Design Manual
Subsets are likely the object in question whenever your problem seeks a “cluster,” “collection,” “committee,” “group,” “packaging,” or “selection.”