题目描述:
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。
返回 你可以获得的最大乘积 。
样例:

思路:
定义f[i]:拆分i,分得整数乘积的最大值。
那么对于每一个i,我们设置一个挡板j****(将i分成[1, j], [j + 1, i]两个区间),前半段拆,后半段不拆,那么i就可以拆分成f[j]和(i - j)两段,同时还需要比较的是前半段存在不拆的可能(f[j]定义的是一定要拆的最大值),即j 和 (i - j)。 依次设置挡板,取最大值即可。
代码:
class Solution:def integerBreak(self, n: int) -> int:f = [0] * (n + 1)f[1], f[2] = 1, 1for i in range(2, n + 1):for j in range(i):f[i] = max(f[i], j * (i - j), f[j] * (i - j))print(f)return f[n]