A study of problem solving techniques including divide and conquer, dynamic programming, greedy algorithms, search and backtracking, heuristics for hard problems. The techniques will be applied for programming solutions to small but challenging problems from a variety of areas, including arithmetic and algebra, number theory, graph theory, combinatorics, geometry, strings.
A study of problem solving techniques including divide and conquer, dynamic programming, greedy algorithms, search and backtracking, heuristics for hard problems. The techniques will be applied for programming solutions to small but challenging problems from a variety of areas, including arithmetic and algebra, number theory, graph theory, combinatorics, geometry, strings.