剪绳子问题
给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
思路:贪心算法 这个首先我们从比较小的数字开始看看规律
4:2*2 5:3*3 6:3*3 7:4*3 8:2*3*3 9:3*3
从这些规律中可以看出一般都是由2、3组成但是3的数目大于2的数目;
class Solution: def cutRope(self, number): # write code here res=1 if number<=1: return 0 elif number<=2: return 1 elif number<=3: return 2 elif number>3: if number%3==0: res=3**(number//3) elif number%3==1: res=3**(number//3-1)*4 else: res=3**(number//3)*(number%3) return res

浙公网安备 33010602011771号