这道题考察的是贪婪算法。
解题细节参考剑指offer.
P.S.
- 这道题的难点之一是需要将结果先赋值为long int字符,否则内存不足以计算模
- 这道题的难点之二是需要对当n>=5时,3*(n-3) >= 2*(n-2);当n=4时2*2最大
时间和内存消耗以及源代码如下:
int cuttingRope(int n)
{
int num3,num2;
long long m;
if (n < 1)
{
return 0;
}
if (n == 1)
{
return 0;
}
if (n == 2)
{
return 1;
}
if (n == 3)
{
return 2;
}
if (n >= 4)
{
num3 = n/3;
if ((n-num3*3)==1)
{
num3--;
}
num2 = (n - num3*3) / 2;
m = 1;
if (num3>0)
{
for (int i=0; i<num3; i++)
{
m = m * 3;
m = m % 1000000007;
}
}
if (num2>0)
{
for (int i=0; i<num2; i++)
{
m = m * 2;
}
}
m = m % 1000000007;
}
return (int) m;
// return num2;
}