感觉有点类似于背包问题,,3是最大的收益
先列举一下大概看一下怎么最大 发现 6分为 3 * 3 2 * 2 * 2
3大于2 12分为 3 * 3 * 3 * 3 4 * 4 * 4 3大于4
3以前是大的结果最优 3以后是小的结果最优
先按照3分然后 剩下的补2 13 3*3*3*2*2=27*4=108 3*3*3*3*1=81
, 然后如果最后剩下1就证明前一轮是个4 分为了 3和1,而2*2收益最大
class Solution:
def cuttingRope(self, n: int) -> int:
# leetcode submit region end(Prohibit modification and deletion)
ans = 1 # 递归推到结果
cur = 0
if n == 2:
return 1
if n == 3:
return 2
while n > cur:
if cur+3 <= n:
ans = ans * 3
cur += 3
elif cur+2 == n:
ans = ans * 2
cur += 2
else:
ans //= 3
ans *= 4
cur += 1
return ans
class Solution:
def cuttingRope(self, n: int) -> int:
if n == 2:
return 1
if n == 3:
return 2
a = n % 3
b = n // 3
ans = pow(3, b)
if a == 2:
ans *= 2
elif a == 1:
ans //= 3
ans *= 4
return ans