Pemrograman dinamis (DP) menyelesaikan masalah dengan submasalah yang tumpang tindih dan sustruktur optimal dengan menghitung setiap submasalah sekali dan menggunakan kembali hasilnya. Dua gaya adalah memoization (atas-bawah) dan tabulation (bawah-atas).
Idenya
Rekursi naif menghitung ulang submasalah yang sama secara eksponensial. DP menyimpannya, mengubah pekerjaan eksponensial menjadi polinomial.
