三位整数拆分python_343整数拆分

# 这道题我是用动态规划的方法来做的。

# 遍历从1 ~ n 里边所有的数差分后的最大乘积,

# 然后从中找出两个数相加等于n,判断其中的最大乘积是多少。

# 注意,这里还有一种可能,就是这个数的最大乘积,没有这个数本身大。

# 所以判断的时候用max(index2,dp[index2])

class Solution:

def integerBreak(self, n: int) -> int:

# 这里传入的数不可能是 1

dp = [0 for i in range(n + 1)]

# 这里为了简便,我把dp[1]定义成了1,其实可以写成0的。

# 因为在后边的计算中,哪怕使用到1,也是把它当做1来看

dp[1],dp[2] = 1,1

# 遍历从3 —— n的所有数。

for index1 in range(3,n + 1):

# 找出从1到index1-1的乘积,注意这里可以遍历一半

for index2 in range(1,index1 // 2 + 1):

# 动态方程,自己体会理解下

dp[index1] = max(dp[index1],max(dp[index2],index2) * max(dp[index1 - index2],index1 - index2))

return dp[n]

A =Solution()

print(A.integerBreak(10))

print(A.integerBreak(2))cf08c81590ec8ca780696098b3fb4719.gif

扫码关注我们

微信号:SRE实战

拒绝背锅 运筹帷幄

×

选择打赏方式:

微信

QQ钱包

支付宝

c0ec93f301863b5381185e012e6324d6.png

打赏

091d4e3ecb8bf2d20dcb90079d6ea898.png

打赏

32f24347109d254606a60e348153293e.png

打赏

多少都是心意!谢谢大家!!!

×

选择分享方式:

微信扫一扫,分享朋友圈

Or

手机扫一扫,精彩随身带

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值