题目:343. 整数拆分
思路
动态规划
- 状态转移方程:
3个数取最大- 自己;
- 拆成2个数;
- 先拆一个数
i - j
,剩下的拆分交给前面f[j]
;
代码
// 注意:没有给定k的值, 是自己定的
// f[i] : 拆成i个的最大值
// f[i] = max(f[i], )
// f[n] = 1, f[n-1] =
class Solution {
public:
int integerBreak(int n) {
int i, j;
int f[65] = {0};
f[2] = 1;
for(i = 2; i <= n; i++)
{
for(j = 1; j < i; j++)
{
f[i] = max(f[i], max(j * (i - j), f[j] * (i - j)));
}
}
return f[n];
}
};