classSolution: defmctFromLeafValues(self, arr: List[int]) -> int: a = [[0] * len(arr) for i in range(len(arr))]
defdp(i, j): if i == j: return0 if a[i][j] != 0: return a[i][j] res = float('inf') for k in range(i, j): res = min(res, dp(i, k) + dp(k + 1, j) + max(arr[i:k + 1]) * max(arr[k + 1:j + 1])) a[i][j] = res return res