Programare dinamică
Este o tehnică folosită la problemele de optimizare precum și la cele de numărare.
Nu vorbim despre un "template" de algoritm, ci despre un principiu.
Codul arată diferit de la o problemă la alta. Aici dificultatea este "să te prinzi", implementarea fiind mai ușoară în majoritatea cazurilor (sau cel puțin se obține un cod relativ scurt).
O caracteristică a programării dinamice este ca stările pentru care se dorește obținerea optimului (din una în alta) să poată fi imaginate ca un graf aciclic.