Я изучаю динамическое программирование.Я застрял в этом вопросе.Я понимаю необходимость трех петель.Но как придумать такие схемы, как 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;
}
}
}
}