Interval DP
DP for merging intervals with a cost function.
Interval DP
Setup:
- Input: items. Merging subintervals and incurs a cost of .
- Output: The minimum total cost to merge all items into one item.
Steps:
- Subproblem: be the minimum cost to merge items from to .
- Recurrence relation:
- Answer: .
int cost(int i, int k, int j) { return ...; }
int IntervalDP(int n) {
vector<vector<int>> f(n + 1, vector<int>(n + 1, 0));
for (int d = 2; d <= n; d++) {
for (int i = 1; i <= n - d + 1; i++) {
int j = i + d - 1;
f[i][j] = INT_MAX;
for (int k = i; k < j; k++) {
f[i][j] = min(f[i][j], f[i][k] + f[k + 1][j] + cost(i, k, j));
}
}
}
return f[1][n];
}