题解 | #剪绳子#
剪绳子
http://www.nowcoder.com/practice/57d85990ba5b440ab888fc72b0751bf8
14行O(nLog(n))代码。
class Solution {
public:
int cutRope(int number) {
int ans = 0;
for(int m = 2;m<=number/2;m++){
int step = number/m;
//总共m段绳子
int llen = number - m*step;
int now = pow(step, m-llen)*pow(step+1, llen);
ans = now>ans?now:ans;
}
return ans;
}
};
根据基本不等式,在和一定的情况下想要乘积最大最优的办法就是将这些数均分。 所以假设均分情况下算出短绳子和长绳子分别多少段然后相乘即可。