Four optimization problems solved from scratch, where the goal was not just a working solution but a refined one: start from a brute-force baseline, prove it correct, then design faster algorithms and analyze the time and space cost of each attempt.
The problems cover a range of scenarios: minimizing purchase costs when prices change over time, equalizing lists through interval operations, transforming one list into another in the fewest steps, and finding minimum-cost set partitions.
Each problem uses a different mix of strategies (dynamic programming, recursive backtracking, divide and conquer, and greedy heuristics), and each comes with a written report on the reasoning, the correctness arguments, and how the approaches compare in complexity.
All code is Python, one folder per problem with its implementation and a full PDF analysis.