class Solution {
public:
int cutRope(int number) {
int res = 0;
// 此处循环中的i是段的长度,等于1时指全是长度为1的段,不能等于number
for (int i = 1; i != number; ++i){
int a = number / i;
int b = number % i;
int temp = 0;
if (b)
temp = pow(i, a) * b;
else
temp = pow(i, a);
if (temp > res)
res = temp;
}
return res;
}
};没有用到动态规划的思想,如下考虑:和相同求积最大,必然是各分量值越相近越大,问题是分成几个分量。
1、题设绳长度为整数(且大于1),分成整数段,每一段长为整数(也大于1);
2、循环中i含义为当各段长度最为相近时每段的长度,因为有不整除,故有余数存在,因为不能一刀都不切,所以i != number。
欢迎交流指正!!!

京公网安备 11010502036488号