Algorithms can be classified based on their design paradigm, i.e. how they approach a given problem: Backtracking Brute-force (Exhaustive) Decrease-and-Conquer Dynamic Programming Greedy Algorithm