【发布时间】:2018-05-20 11:16:36
【问题描述】:
我正在学习动态编程。我被困在矩阵链乘法这个问题上。我理解三个循环的需要。但是如何提出这些安排,如 j = i+L-1 和 i 的测试条件。 还有一些其他 DP 问题具有类似的解决方案,我注意到这些循环仅用于填充上三角矩阵。我想知道我们为什么要写这样的循环?
for (int L=2; L<n; L++){
for (int i=1; i<n-L+1; i++)
{
int j = i+L-1; // Why ?
m[i][j] = INT_MAX;
for (int k=i; k<=j-1; k++)
{
int q = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
if (q < m[i][j])
{
m[i][j] = q;
bracket[i][j] = k;
}
}
}
}
【问题讨论】:
标签: algorithm for-loop matrix dynamic-programming