当前位置: 首页 > article >正文

Leetcode 343. 整数拆分 java题解

https://leetcode.cn/problems/integer-break/
我想不到

class Solution {
    //int max=0;
    public int integerBreak(int n) {
        int[] dp=new int[n+1];//dp[n]:n拆分后的最大乘积
        dp[2]=1;//2只能被拆成2个,1+1,1*1=1
        for(int i=3;i<=n;i++){
            for(int j=1;j<i;j++){
                //j是从1开始遍历,拆分j的情况.所以j不需要再拆
                dp[i]=Math.max(Math.max(dp[i-j]*j,(i-j)*j),dp[i]);
                //在递推公式推导的过程中,每次计算dp[i],取最大的
            }
        }
        return dp[n];//返回结果
    }
}
//j * (i - j) 是单纯的把整数拆分为两个数相乘
//而j * dp[i - j]是拆分成两个以及两个以上的个数相乘
//dp[i] 是依靠 dp[i - j]的状态,所以遍历i一定是从前向后遍历,先有dp[i - j]再有dp[i]

http://www.kler.cn/a/414640.html

相关文章:

  • 【CSS】一篇掌握CSS
  • Linux 内核 调用堆栈打印函数
  • vue3-setup基本使用(非响应式数据)
  • Flink高可用配置(HA)
  • 前端JavaScript(一)---基本介绍
  • css:项目
  • C++中的Lambda表达式
  • 【Code First】.NET开源 ORM 框架 SqlSugar 系列
  • 林业推荐系统开发:Spring Boot高级技巧
  • Linux定时器机制实现循环确定时间
  • 使用 OpenCV 进行视频中的行人检测
  • 【Web前端】如何构建简单HTML表单?
  • Vue 路由配置与环境差异问题解析:开发与生产环境中的行为差异
  • 大数据新视界 -- Hive 函数应用:复杂数据转换的实战案例(下)(12/ 30)
  • 解决 Vim 上下左右变成 ABCD 的问题
  • 技术总结(四十)
  • springboot331“有光”摄影分享网站系统pf(论文+源码)_kaic
  • CTF-RE 从0到 N: 高版本 APK 调试 + APK逻辑修改再打包 + os层调试[2024 强网杯青少年专项赛 Flip_over] writeup
  • 50-基于单片机和传感器的冷链运输设计
  • 实战丨证券 HTAP 混合业务场景的难点问题应对
  • python代码示例(读取excel文件,自动播放音频)
  • Flink (Windows Function 窗口函数)
  • [Maven]3.5.3配置
  • HTTP超文本协议
  • Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型
  • C++练级计划-> 《IO流》iostream fstream sstream详解