Skip to main content
  1. Posts/

LeetCode-3290 最高乘法得分

·1 min·

LeetCode-3290 最高乘法得分 #

Solution 1 #

用 $dp[i][j]$ 表示 $a[0:i + 1]$ 和 $b[:j+1]$ 的最大乘法得分, 每次考虑当前是否匹配即可.

代码如下:

class Solution:
    def maxScore(self, a: List[int], b: List[int]) -> int:
        dp = [[-inf for _ in b] for _ in range(4)]
        for j, x in enumerate(b):
            for i in range(4):
                dp[i][j] = max(-inf if j <= i else dp[i][j - 1], a[i] * x + (dp[i - 1][j - 1] if i > 0 else 0))
        return dp[3][-1]