#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)$