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);
}
};