动态规划
dp: dp[i] 表示将正整数 i 拆分成至少两个正整数的和之后,这些正整数的最大乘积。
边界条件 :0 不是正整数,1 是最小的正整数,0 和 1 都不能拆分,因此 dp[0]=dp[1]=0。
状态转移方程:

class Solution {
public:
int cuttingRope(int n) {
vector<int> vi;
vi.push_back(0);
vi.push_back(0);
for(int i=2; i<=n; i++){
int temp = 0;
for(int j=1; j<i; j++){
temp = max(temp, max(j*(i-j), j*vi[i-j]));
}
vi.push_back(temp);
}
return vi[n];
}
};
本文介绍了一种使用动态规划解决特定数学问题的方法:即将一个正整数拆分为若干个正整数之和时,如何获得这些正整数的最大乘积。通过定义状态转移方程和边界条件,实现了一个C++函数来计算这个问题的解。
597

被折叠的 条评论
为什么被折叠?



