cuts
and add 0
and n
to the beginning and end of the array respectively.dp
of size (m+2) x (m+2)
with all elements set to 0
, where m
is the number of cuts.l
from 2
to m+1
(inclusive).l
, iterate over all possible starting points i
for the subproblem.j
of the subproblem to i + l
.dp[i][j]
to infinity
.k
for the next cut between i
and j
.dp[i][j]
to the minimum of its current value and the sum of dp[i][k]
, dp[k][j]
, and the cost of making the cut at position k
.dp
table, return dp[0][m+1]
as the answer.