动态规划

痞子三分冷 提交于 2019-11-30 03:50:43

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连乘的最小值,返回

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!