Leetcode 343. 整数拆分

server/2025/2/7 4:13:24/

343. 整数拆分 - 力扣(LeetCode)https://leetcode.cn/problems/integer-break/description/给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

返回 你可以获得的最大乘积 。

示例 1:

输入: n = 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

输入: n = 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

提示:

  • 2 <= n <= 58

本题采用动态规划。借用容斥原理的思想,试想dp[i](其意义代码注释中已给出)可以用什么表示。我们将 i 拆分为 j 与 i-j 两部分,那么我们可以知道,dp[i] = max({dp[j]*(i-j),(i-j)*j,dp[i]}),这其实就相当于在对每个 i 拆分时去尝试遍历小于它的所有数,即 j ,本质依然是记忆化搜索。代码如下:

class Solution {
public:int integerBreak(int n) {int dp[60] = {0};//dp[i]代表拆分i可以得到的最大乘积dp[0] = dp[1] = dp[2] = 1;//初始化for(int i=3;i<=n;i++){for(int j = 1;j < i;j++){dp[i] = max({dp[j]*(i-j),(i-j)*j,dp[i]});}}return dp[n];}
};

顺带提一嘴,这道题可以用贪心,这里给出一个结论:拆分某个数,使其乘积最大的方式是有3拆3,如果最后剩4则保留,否则依然继续拆3(例如如果还剩5的话,拆成3*2是最大的)。


http://www.ppmy.cn/server/165582.html

相关文章

【大数据技术】搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn)

搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) jdk-8u361-linux-x64.tarhadoop-3.3.6.tar.gz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Hadoop+MapReduce+Yarn的详细步骤。 注意: 统一约定将软件安装包存放…

面试题整理:Java多线程(二)多线程、死锁、乐观锁悲观锁、线程池

文章目录 线程1. ⭐什么是线程和进程&#xff1f;区别和联系&#xff1f;2. 堆和方法区是什么&#xff1f;3. 如何创建线程?4. ⭐线程的生命周期和状态有什么&#xff1f;5. 什么是线程上下文切换&#xff1f;6. Thread.sleep()和Object.wait()的异同点&#xff1f;7. 直接调用…

【办公类-99-01】20250201学具PDF打印会缩小一圈——解决办法:换一个PDF阅读器

背景需求&#xff1a; 2024年1月13日&#xff0c;快要放寒假了&#xff0c;组长拿着我们班的打印好的一叠教案来调整。 “前面周计划下面的家园共育有调整&#xff0c;你自己看批注。” “还有你这个教案部分的模版有问题&#xff0c;太小&#xff08;窄&#xff09;了。考虑…

【LLM-agent】(task4)搜索引擎Agent

note 新增工具&#xff1a;搜索引擎Agent 文章目录 note一、搜索引擎AgentReference 一、搜索引擎Agent import os from dotenv import load_dotenv# 加载环境变量 load_dotenv() # 初始化变量 base_url None chat_model None api_key None# 使用with语句打开文件&#xf…

23.Word:小王-制作公司战略规划文档❗【5】

目录 NO1.2.3.4 NO5.6​ NO7.8.9​ NO10.11​ NO12​ NO13.14 NO1.2.3.4 布局→页面设置对话框→纸张&#xff1a;纸张大小&#xff1a;宽度/高度→页边距&#xff1a;上下左右→版式&#xff1a;页眉页脚→文档网格&#xff1a;勾选只指定行网格✔→ 每页&#xff1a;…

STM32-启动文件

STM32-启动文件 简介启动文件栈空间开辟堆空间开辟中断向量表定义复位程序 系统启动流程 简介 STM32 启动文件由 ST 官方提供&#xff0c;由汇编编写&#xff0c;是系统上电复位后执行的第一个程序。 启动文件主要做的工作。 1.初始化堆栈指针 SP _initial_sp 2.初始化程序计…

自动驾驶---两轮自行车的自主导航

1 背景 无人驾驶汽车最早出现在DARPA的比赛中&#xff0c;从那个时刻开始&#xff0c;逐渐引起全球学者的注意&#xff0c;于是从上个世纪开始各大高校院所开始了无人汽车的研发。直到这两年&#xff0c;无人驾驶汽车才开始走进寻常百姓家&#xff0c;虽然目前市面上的乘用车还…

04树 + 堆 + 优先队列 + 图(D1_树(D6_B树(B)))

目录 一、学习前言 二、基本介绍 三、特性 1. 从概念上说起 2. 举个例子 四、代码实现 节点准备 大体框架 实现分裂 实现新增 实现删除 五、完整源码 一、学习前言 前面我们已经讲解过了二叉树、二叉搜索树&#xff08;BST&#xff09;、平衡二叉搜索树&#xff08…