Building Optimal From Optimal Subproblems - Optimal Substructure — The Foundation of Dynamic Programming | OneNoughtOne