From 7ae0aeb7440b5fbe7405162a5f7cf13af286c4d9 Mon Sep 17 00:00:00 2001 From: Jeffrey Hsu Date: Sat, 6 Dec 2025 00:03:28 +0800 Subject: [PATCH] Implement dynamic programming solution for tribonacci and fix index calculation in sequence matching --- src/1137.c | 10 ++++++++++ src/1668.c | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/1137.c b/src/1137.c index dbb1d09..f2a464a 100644 --- a/src/1137.c +++ b/src/1137.c @@ -4,4 +4,14 @@ #include int tribonacci(int n) { + int dp[n + 1]; + dp[0] = 0; + if (n >= 1) + dp[1] = 1; + if (n >= 2) + dp[2] = 1; + for (int i = 3; i <= n; i++) + dp[i] = dp[i - 3] + dp[i - 2] + dp[i - 1]; + + return dp[n]; } \ No newline at end of file diff --git a/src/1668.c b/src/1668.c index 97b72b2..63b1a13 100644 --- a/src/1668.c +++ b/src/1668.c @@ -14,19 +14,20 @@ int maxRepeating(char *sequence, char *word) return 0; int dp[n]; + memset(dp, 0, sizeof(dp)); for (int i = m - 1; i < n; i++) { bool valid = true; for (int j = 0; j < m; j++) { - if (sequence[i - m + 1] != word[j]) + if (sequence[i - m + 1 + j] != word[j]) { valid = false; break; } } if (valid) - dp[i] = (i == m - 1 ? 0 : dp[i - m] + 1); + dp[i] = (i == m - 1 ? 0 : dp[i - m]) + 1; } int ret = dp[0];