获赞
659
粉丝
29
关注
4
看过 TA
65
东北大学
2021
算法工程师
IP属地:北京
欢迎机器学习领域的小伙伴共同进步
私信
关注
此题作为面试中经常考到的类型,涉及到我们熟悉的递归,动态规划,贪婪算法这三种,此文会介绍这三种解法. 递归我们先定义函数f(n)为把绳子剪成若干段之后的各段长度乘积的最大值.在剪第一刀的时候,我们会有n-1种可能的选择,也就是说剪出来的第一段绳子的长度可能为1,2,......n-1.因此就有了递归公式 f(n) = max(f(i)*f(n-i)),其中0<i<n.代码如下: #递归写法 class Solution: def cutRope(self, number): # write code here if number < 2: ...
sagii:贪心算法:如果target大于3,那么要求出的乘积的最大值一定是被剪裁过的(4看作2*2),要使结果积的数值最大,要避免剪裁出来1的情况,而又已知了当这个数值大于3时,要经过剪裁才能获取最大值,可以得出结论这个数值是被剪裁为2和3的,而且尽量剪裁3(如6:2*2*2与3*3,9:3*3*3,2*2*2*3)。楼主的代码的意思是如果这个数能够被3整除的话,就把这个数分解为3,也就是pow(3, timesOf3),如果余数为1,就分解出来2个2,其余为3,如果余数为2,就分解出来一个2其他为3.
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务