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

思路:

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

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

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

拆成多个数:j+dpi-j

状态转移dpi=max(dpi,j*(i-j),j*dpi-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()
相关推荐
2601_9571746534 分钟前
大模型算法 简单 容易 用这个方法
算法
VALENIAN瓦伦尼安教学设备36 分钟前
激光对中仪采购要点
数据库·嵌入式硬件·算法
vx-程序开发1 小时前
springboot农产品运输服务平台---附源码75498
java·javascript·spring boot·python·eclipse·django·php
Dxy12393102161 小时前
python 中的 APScheduler 使用详解
开发语言·python
染指11102 小时前
76.高级RAG-后检索器(时间排序)
人工智能·python·llama_index·llamaindex
Forever Nore2 小时前
LeetCode 1 两数之和
算法·leetcode·职场和发展
To_OC3 小时前
LC 3 无重复字符的最长子串:从入门滑动窗口到优化写法,再也不怕面试官追问
javascript·算法·leetcode
weixin_440784113 小时前
Java基础常见题
java·开发语言·python·java基础
(Charon)3 小时前
【C++】多线程死锁:产生原因、复现与解决方法
开发语言·c++·算法
跨境小彭3 小时前
Python列表去重的6种高效方法(含保留顺序+性能对比)
开发语言·python