动态规划——整数拆分(python)

思路:

求一个整数,拆分后相乘的最大值。

定义dp数组为,dp[i]为将数i进行拆分后的相乘最大值。数i可以拆成两个,也可以拆成三个、四个......

拆成两个数:j+(i-j)

拆成多个数:j+dp[i-j]

状态转移dp[i]=max(dp[i],j*(i-j),j*dp[i-j])

复制代码
def IntegerBreak(n):
    dp=[0]*(n+1)
    dp[2]=1
    for i in range(1,n+1):
        for j in range(1,i):
            dp[i]=max(dp[i],j*(i-j),j*dp[i-j])  #和当前的dp[i]、j*(i-j),j*dp[i-j]比较
    print(dp[n])
    return 

def main():
    n=int(input())
    IntegerBreak(n)
if __name__=="__main__":
    main()
相关推荐
吕源林2 小时前
Python中PyTorch如何处理NaN损失值_添加梯度裁剪与检查输入数据
jvm·数据库·python
Absurd5872 小时前
SQL如何利用JOIN查询进行数据报表汇总_聚合函数与分组连接方法
jvm·数据库·python
Dxy12393102162 小时前
Python使用XPath定位元素:and和or组合条件
前端·javascript·python
m0_514520572 小时前
如何在 Go 中基于接口样例动态创建对象实例
jvm·数据库·python
cici158742 小时前
基于Koopman模型预测控制的非线性流控制数据驱动框架
算法
Gerardisite2 小时前
企业微信自动化开发新思路: RPA 接入方案
java·python·自动化·企业微信·rpa
6Hzlia2 小时前
【Hot 100 刷题计划】 LeetCode 416. 分割等和子集 | C++ 0-1背包 1D空间极致优化
c++·算法·leetcode
23471021272 小时前
4.22 学习笔记
软件测试·笔记·python·学习
聆风吟º2 小时前
【Python编程日志】Python入门基础(一):标识符 | 关键字 | 注释
python·注释·标识符·关键字