解题思路
根据基本不等式,我们知道和相同的情况下,越是平分,乘积越大。
所以遍历所有可能的段数,然后算出每个段的乘积,最大的就是最终结果。
代码
class Solution {
public:
int cuttingRope(int n) {
int ans = 1,now;
for(int i = 2;i<n;i++){//i段绳子
int minRope = n/i;
int maxRopeCnt = n-minRope*i; //较大的那段有minRopeCnt个
int minRopeCnt = i-maxRopeCnt;//较小的那段有minRopeCnt个
now = pow(minRope,minRopeCnt) * pow(minRope+1,maxRopeCnt);
ans = now>ans?now:ans;
}
return ans;
}
};