int twoSequenceDp(String a, String b) {
int[][] dp = new int[a.length() + 1][b.length() + 1];
for (int i = 1; i <= a.length(); i++) {
for (int j = 1; j <= b.length(); j++) {
dp[i][j] = transition(a, b, i, j, dp);
}
}
return dp[a.length()][b.length()];
}
def two_sequence_dp(a: str, b: str) -> int:
dp = [[0] * (len(b) + 1) for _ in range(len(a) + 1)]
for i in range(1, len(a) + 1):
for j in range(1, len(b) + 1):
dp[i][j] = transition(a, b, i, j, dp)
return dp[len(a)][len(b)]
def twoSequenceDp(a: String, b: String): Int =
val dp = Array.fill(a.length + 1, b.length + 1)(0)
for i <- 1 to a.length do
for j <- 1 to b.length do
dp(i)(j) = transition(a, b, i, j, dp)
dp(a.length)(b.length)
int twoSequenceDp(const std::string& a, const std::string& b) {
std::vector<std::vector<int>> dp(a.size() + 1, std::vector<int>(b.size() + 1));
for (int i = 1; i <= a.size(); i++) {
for (int j = 1; j <= b.size(); j++) {
dp[i][j] = transition(a, b, i, j, dp);
}
}
return dp[a.size()][b.size()];
}