#3920. [GESP202312 七级 C++] 第 2 题

[GESP202312 七级 C++] 第 2 题

对于下面动态规划方法实现的函数,以下选项中最适合表达其状态转移函数的为( )。

int s[MAX_N], f[MAX_N][MAX_N];
int stone_merge(int n, int a[]) {
    for (int i = 1; i <= n; i++)
        s[i] = s[i - 1] + a[i];
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            if (i == j)
                f[i][j] = 0;
            else
                f[i][j] = MAX_F;
    for (int l = 1; l < n; l++)
        for (int i = 1; i <= n - l; i++) {
            int j = i + l;
            for (int k = i; k < j; k++)
                f[i][j] = min(f[i][j], f[i][k] + f[k + 1][j] + s[j] - s[i - 1]);
        }
    return f[1][n];
}

{{ select(1) }}

  • $f(i,j)=\min_{i \le k < j}(f(i,j),f(i,k)+f(k+1,j)+s(j)-s(i-1))$
  • $f(i,j)=\min_{i \le k < j}(f(i,j),f(i,k)+f(k+1,j)+\sum_{k=i}^{j}a(k))$
  • $f(i,j)=\min_{i \le k \le j}(f(i,k)+f(k+1,j)+\sum_{k=i}^{j+1}a(k))$
  • $f(i,j)=\min_{i \le k < j}(f(i,k)+f(k+1,j))+\sum_{k=i}^{j}a(k)$