跳至主要內容

剪绳子

微信公众号:储凡2023/3/28大约 2 分钟

剪绳子

题目链接

题目描述

给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m 、 n 都是整数, n > 1 并且 m > 1 , m <= n ),每段绳子的长度记为 k[1],...,k[m] 。请问 k[1]k[2]...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到的最大乘积是 18 。

数据范围:2≤n≤60 进阶:空间复杂度O(1) ,时间复杂度O(n)

示例:

#输入:
8
#返回值:
18
#说明:
8 = 2 +3 +3 , 2*3*3=18

刷题思路

  • 贪心思想

代码实现

/**
 * G(n,m)=k * G(n-k)(m-1)
 */
export function cutRope(number) {
  let max = 1
  for (let index = 1; index <= number; index++) {
    if (index * cutRope(number - index) > max) {
      max = index * cutRope(number - index)
    }
  }
  return max
}

console.log(cutRope(8))

一些建议

更新日志

2024/7/29 15:43
查看所有更新日志
  • 5a2b2-feat: 移除markdown-cli模块,采用prettier校验文档格式
  • a3cca-refactor: 替换eslint规则,使用antfu/eslint模块 (#138)
  • c0f2d-refactor: 升级vuepress相关版本,优化项目结构 (#137)
  • 06596-feat: 算法相关文档新增固定链接,优化导入代码配置
  • 9b9e4-feat: 算法相关文档更新,删除讨论链接 (#88)
  • b0275-feat(markdownlint-cli): 添加markdown文档校验,支持lint脚本自动格式化文档
  • 5f1e1-feat: 导航栏、侧边栏内容修改,新增目录对应的文档
  • 02ab1-style: 文档目录调整,修改mdEnhance配置
  • 8de1a-feat: 剑指算法文档更新,修改目录结构
  • 8a3a4-docs: cutRope update