14-1:
DP做法,思路比较好
class Solution {
public:
int cuttingRope(int n) {
if(n <= 1)
return 0;
vector<int> dp(n+1, 1);
for(int i = 2; i <= n; i++) {
for(int j = 1; j < i; j++) {
dp[i] = max(dp[i], max(dp[i-j]*j, (i-j)*j));
}
}
return dp[n];
}
};
数学做法
class Solution {
public:
int cuttingRope(int n) {
if(n <= 3) return n-1;
int a = n / 3;
int b = n % 3;
if(b == 1) return pow(3, a-1) * 4;
if(b == 2) return pow(3, a) * 2;
return pow(3, a);
}
};

本文探讨了绳子切割问题的两种高效解法:动态规划与数学方法。通过动态规划,我们逐步构建最优解,而数学方法则提供了一种更直接的求解途径,尤其适用于大数值输入。文章详细介绍了每种方法的实现细节。
1万+

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



