没有啥思路,最后核心思想就是枚举:
我们枚举所有的相同大小的可能性,计为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的逻辑就比较难受了一点.不过没关系,再测试不同过的时候,我们通过看出错的测试用例,就因该可以很快的定位到这三种情况了。
整体效率还是不错的,勉强及格,如有为题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
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;
- }
- };