Si es necesario dividir la matriz en exactamente k subsegmentos, simplemente se agrega el segundo parámetro en la programación dinámica: en cuántos segmentos dividir.
Es decir, ahora consideraremos el siguiente dp:
dp[i][j] es la respuesta para los primeros i elementos, si los dividimos exactamente en j segmentos.
Tenga cuidado con los estados no válidos.
El recálculo de la dinámica es el mismo, pero teniendo en cuenta el segundo parámetro. Es decir, contando dp[i][k] y clasificando a través del borde izquierdo del último subsegmento j, volvemos a calcular dp[i][k] hasta dp[j - 1][k - 1] y el valor del segmento [Ji].