RozwiÄ zanie przez programowanie dynamiczne: Niech l_0, l_1, ... , l_n to dĹugoĹci kolejnych fragmentĂłw belki, ktĂłre mamy otrzymaÄ na koĹcu. Zdefiniujmy tablicÄ T[i,j], dla 0<=i<j<=n, nastÄpujÄ co: T[i,j] to optymalny koszt pociÄcia belki dĹugoĹci l_i+l_{i+1}+...+l_{j} na belki dĹugoĹci l_i, l_{i+1}, ... , l_j. Ĺatwo zauwaĹźyÄ, Ĺźe T[i,j] speĹnia nastÄpujÄ ce wĹasnoĹci rekurencyjne: (1) T[i,i] = 0 dla kaĹźdego i; (2) jeĹli i<j, to T[i,j] = L + max_{i<=k<j} (T[i,k]+T[k+1,j]), gdzie L = l_i+l_{i+1}+...+l_{j}. Drugi wzĂłr wynika z tego, Ĺźe rozwaĹźamy wszystkie moĹźliwe przypadki, gdzie moĹźemy wykonaÄ pierwsze ciÄcie, a potem rozwiÄ zujemy optymalnie obie otrzymane krĂłtsze belki patrzÄ c do juĹź obliczonych wartoĹci w tablicy T. Przy pomocy wzorĂłw (1) i (2) moĹźemy policzyÄ wszystkie wartoĹci T[i,j] w czasie O(n^3). Szukany rezultat to T[0,n].