1. 矩阵连乘问题
动态规划为先将子问题的最优解求出来,然后保存在二维数组中,然后再从下向上求解。
for(int len = 1; len <= n; len++) 从1到n设定子值问题的长度,当子问题为不同长度时,求解子问题的最优解,当遍历到n时,为最终问题的最优解。
for(int i = 1, j = i+len; j <= n; i++,j++) i为子问题的起始点,j为子问题的终止点,将子问题遍历整个最终问题。
int min = INF;
for(k = i; k < j; k++) 找出子问题的分割点。
{
int count = m[i][k] + m[k+1][j]+p[i-1]*p[k]*p[j]; 分割找到count
if(count < min){
min = count;如果这个count比min小,赋值给min,为了求出最小的连乘次数
}
}
m[i][j] = min; 得到了m[i][j]的最小值。保存
}
}
return m[1][n] 找到了1-n连乘的最小值,返回
来源:https://blog.csdn.net/qq_32828145/article/details/101054201