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

C++(动态规划之拆分整数)

其实我交上去都有点似懂非懂

题目:(343. 整数拆分 - 力扣(LeetCode))

给定一个正整数 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

题解:

class Solution {
public:int integerBreak(int n) {vector<int> dp(n + 1);dp[2]=1;for(int i=3;i<=n;i++){for(int j=1;j<=i;j++){dp[i]=max(dp[i],max((i-j)*j,dp[i-j]*j));}}return dp[n];}
};

 理解:

首先解释一下这个动态规划数组的含义:数字i能得到的最大乘积,所以当i=2的时候初始化为1(也就是2能拆出最大的乘积是1*1的时候)。剩下的我感觉我有点解释不出来,能力有限(过段时间回顾这篇博客的时候能解释的好就补在评论区)

http://www.lryc.cn/news/345828.html

相关文章:

  • unix C之环境变量
  • Flutter实战记录-协作开发遇到的问题
  • Linux 安装JDK和Idea
  • c#绘制渐变色的Led
  • LifeCycle之ProcessLifeCycleOwner
  • C++ | Leetcode C++题解之第79题单词搜索
  • 如何通过PHP语言实现远程控制空调
  • 【AI+换脸换装】从OpenAI 探索色情露骨内容领域浅聊AI换脸换装
  • Flutter笔记:Widgets Easier组件库(13)- 使用底部弹窗
  • RobbitMQ基本消息队列的消息发送过程
  • MongoDB聚合运算符:$topN
  • 什么是顶级域名、二级域名、三级域名?
  • [Android]四大组件简介
  • 一次完整的GC流程
  • GAME101-Lecture06学习
  • 202203青少年软件编程(Python)等级考试试卷(二级)
  • 带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败了
  • [Linux_IMX6ULL驱动开发]-GPIO子系统和Pinctrl子系统
  • Elasticsearch:理解人工智能相似性搜索
  • Mac YOLO V9推理测试(基于ultralytics)
  • OuterClass.this cannot be referenced from a static context
  • CAP与BASE分布式理论
  • JavaScript性能优化策略
  • curl访问流式非流式大模型openai api接口
  • Go 使用 MongoDB
  • 什么是g++-arm-linux-gnueabihf
  • Unity延时触发的几种常规方法
  • CSS文字描边,文字间隔,div自定义形状切割
  • XWiki 服务没有正确部署在tomcat中,如何尝试手动重新部署?
  • 【退役之重学Java】关于 Redis