1,题目:
2,核心思想
没有啥思路,最后核心思想就是枚举:
我们枚举所有的相同大小的可能性,计为begin,begin的取值显然是[2,n-1],在使用一个变量
res维护最大值,但是呢,思路到这里感觉还行具体实现过程中有非常多的坑。
1,正好分完
比如:n=8,begin=4,
sum=2*2*2*2
2,分不完,有余数,余数为1
比如: n=9,begin=4
sum=2*2*2*(2+1)
3,分不完,余数不为1 ,
比如:n=10,begin=4,
sum=2*2*2*2*(10%4)
这三种情况处理方法都不一样,我们分开处理,以至于if的逻辑就比较难受了一点.不过没关系,再测试不同过的时候,我们通过看出错的测试用例,就因该可以很快的定位到这三种情况了。
3,代码实现
整体效率还是不错的,勉强及格,如有为题xdm指正哦。谢谢你们,如有收获记得点赞哦.
class Solution {
public:
int res=1;
void depth(int n,int begin)
{
if(begin==n)
return;
int tmp=n/begin;
int sum=1;
for(int i=0;i<tmp-1;i++)
{
sum*=begin;
}
if(n%begin==1)
{
sum*=(1+begin);
}else if(n%begin)
{
sum*=begin;
sum*=(n%begin);
}else
{
sum*=begin;
}
if(tmp==1)
{
sum=begin*(n%begin);
}
res=max(res,sum);
depth(n,begin+1);
}
int cuttingRope(int n) {
depth(n,2);
return res;
}
};