int intervalDp(int n) {
int[][] dp = new int[n][n];
for (int length = 1; length <= n; length++) {
for (int left = 0; left + length <= n; left++) {
int right = left + length - 1;
dp[left][right] = solveInterval(left, right, dp);
}
}
return dp[0][n - 1];
}
def interval_dp(n: int) -> int:
dp = [[0] * n for _ in range(n)]
for length in range(1, n + 1):
for left in range(n - length + 1):
right = left + length - 1
dp[left][right] = solve_interval(left, right, dp)
return dp[0][n - 1]
def intervalDp(n: Int): Int =
val dp = Array.fill(n, n)(0)
for length <- 1 to n do
for left <- 0 to n - length do
val right = left + length - 1
dp(left)(right) = solveInterval(left, right, dp)
dp(0)(n - 1)
int intervalDp(int n) {
std::vector<std::vector<int>> dp(n, std::vector<int>(n));
for (int length = 1; length <= n; length++) {
for (int left = 0; left + length <= n; left++) {
int right = left + length - 1;
dp[left][right] = solveInterval(left, right, dp);
}
}
return dp[0][n - 1];
}