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

如何做好网站首页企业建设营销型网站步骤

如何做好网站首页,企业建设营销型网站步骤,做视频解析网站犯法吗,wordpress函数the_posts343. 整数拆分 文章目录 [343. 整数拆分](https://leetcode.cn/problems/integer-break/)一、题目二、题解方法一:动态规划方法改良 一、题目 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整…

343. 整数拆分

文章目录

    • [343. 整数拆分](https://leetcode.cn/problems/integer-break/)
      • 一、题目
      • 二、题解
        • 方法一:动态规划
        • 方法改良


一、题目

给定一个正整数 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数组以及下标的含义

  • dp[i] 表示正整数 i 拆分后可以获得的最大乘积。

步骤二:确认递推公式

  • 对于正整数 i,我们可以把它拆分成两个正整数 j 和 i-j,其中 1 <= j < i。
  • 那么,对于拆分的两个正整数 j 和 i-j,可以计算它们的乘积 max(j * (i-j))。
  • 但我们还需要考虑 j 和 i-j 是否继续拆分,因此递推公式为 dp[i] = max(max(j * (i-j), j * dp[i-j]), max(dp[j] * (i-j), dp[j] * dp[i-j]))。

步骤三:数组初始化

  • dp[1] 和 dp[2] 的值分别为 0 和 1,因为它们都不能再拆分。

步骤四:确定遍历顺序

  • 我们从小到大遍历正整数 i,从 3 开始遍历到 n,依次计算 dp[i] 的值。

步骤五:举例推导dp数组
让我们通过一个示例来推导 dp 数组。假设输入 n = 6:

进行推导:

  1. 初始化 dp 数组:
dp = [0, 1]
  1. 计算 dp[3]:
dp[3] = max(max(1*(3-1), 1*dp[3-1]), max(dp[1]*(3-1), dp[1]*dp[3-1])) = max(max(1*2, 1*1), max(0*2, 0*1)) = 2
  1. 计算 dp[4]:
dp[4] = 4
  1. 计算 dp[5]:
dp[5] = 6
  1. 计算 dp[6]:
dp[6] = 9

最终返回 dp[n],即 dp[6] = 9,表示将正整数 6 拆分后可以获得的最大乘积为 9。

class Solution {
public:int integerBreak(int n) {vector<int> dp(n+1);dp[1] = 0;dp[2] = 1;for(int i = 3; i <= n; i++){int maxm = 1;//i/2是一个改善措施,因为当j>i/2后所有的情况之前都已经产生过了for(int j = 1; j <= i/2; j++){int k = i-j;int temp = max(max(j*k,dp[j]*k),max(dp[k]*j,dp[j]*dp[k]));if(maxm < temp) maxm = temp;}dp[i] = maxm;}return dp[n];}
};

方法改良

在递推公式的计算部分,我们可以将递推公式简化为 dp[i] = max(j * k, j * dp[k]),并且不再计算 dp[j] * dp[k] 部分。

改良的原因:

  • 在原始的递推公式中,我们考虑了 j 和 k 是否继续拆分,计算了 dp[j] * dp[k] 部分,但实际上,这部分是在之前的状态中已经计算过的,而且不会再参与当前状态的计算。
  • 因此,我们可以直接在递推公式中计算 j * dp[k] 部分,而不再重复计算之前已经得到的 dp[j]。

改良后的代码如下:

cppCopy codeclass Solution {
public:int integerBreak(int n) {vector<int> dp(n + 1);dp[2] = 1;for (int i = 3; i <= n; i++) {int maxm = 1;for (int j = 1; j <= i / 2; j++) {int k = i - j;int temp = max(j * k, j * dp[k]);if (maxm < temp) maxm = temp;}dp[i] = maxm;}return dp[n];}
};
http://www.yayakq.cn/news/993230/

相关文章:

  • 网站cms是什么北流网站
  • 做网站需要什么按钮软件网站怎么做的
  • 商城类型的网站怎么做python为什么叫爬虫
  • 做高仿包的能做网站吗济南集团网站建设
  • 湖南人工智能建站系统软件洛阳网百姓呼声
  • 宁波网络营销网站建设易语言登录WordPress账号
  • 站长素材音效广州华茂建设工程有限公司 网站
  • 延安做网站的公司电话网站建设功能怎么写
  • 网站导航菜单代码和两个黑人同时做网站
  • 广州网站设计公司兴田德润活动做网站价格 网络推广托管服务
  • 淘宝客 备案 网站名称wordpress加入链接
  • 在线教育网站开发时长网页设计图片边框代码
  • 建设企业网站登录901重庆网站优化排名
  • 梧州网站建设费用怎么建自己的平台
  • 淮安汽车集团网站建设北京建设网官网证书
  • 大连网络宣传网站如何免费建立自己的网站
  • 网站建设课程ppt模板网站建设与运营预算
  • 山东建设厅网站专职安全员网页设计好看的网站
  • 杭州杭州网站建设做招牌的广告公司
  • 网站的友情链接怎么做快速搭建网站 开源
  • 政务公开与网站建设工作总结存在问题和困难济南百度推广电话
  • 北京网站制作公司兴田德润实惠前端开发主要工作内容
  • 做网站主机几个配件wordpress主题百度
  • 深圳网站制作台网站建设模板软件
  • 商城网站开发背景一件代发货源网1688
  • 网站机房建设有助于电子商务网站建设简答题
  • 金融类网站设计用dw做音乐网站模板
  • 如何免费建com的网站4s店网站建设方案
  • 东莞创意网站设计网站运营周期
  • 建设通属于官方网站网站被墙了什么意思