描述

给你一根长度为 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)

输入描述:

输入一个数n,意义见题面。

返回值描述:

输出答案。

示例1

输入:

8

返回值:

18

说明:

8 = 2 +3 +3 , 2*3*3=18

示例2

输入:

2

返回值:

1

说明:m>1,所以切成两段长度是1的绳子

解题思路

大n拆解出小n,最后的n一定要是不能再分的,例如1,2,3,5,7

当7作为一个整数跟3-2-2,跟12比的话是小的,所以7也不行

5,分为2-3,那小于6,所以基本就是2-3两个的选择

最小是4,不需要拆分为2-2和1-3

用动态规划解决

# -*- coding:utf-8 -*-
class Solution:def cutRope(self, number):# write code hereif not number or number == 0:return 1if number == 2 :return 1elif number == 3 :return 2data_list = [-1] * (number + 1)for i in range(5):data_list[i] = ifor i in range(5, number + 1):for j in range(1, i):data_list[i] = max(data_list[i], j * data_list[i-j])return data_list[-1]

20211030.剪绳子相关推荐

  1. 剑指offer:面试题14- II. 剪绳子 II

    题目:剪绳子 II 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]* ...

  2. 剑指offer:面试题14- I. 剪绳子

    题目:剪绳子 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]*k[1 ...

  3. leetcode算法题--剪绳子 II

    原题链接:https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/ 相关题目:剪绳子 1.循环求余法 //(x ^ a) % p; long re ...

  4. NOJ——1672剪绳子(博弈)

    [1672] 剪绳子 时间限制: 500 ms 内存限制: 65535 K 问题描述 已知长度为n的线圈,两人依次截取1~m的长度,n, m为整数,不能取者为输. 输入 输入n, m:( 0 < ...

  5. 剪绳子python_Python剪绳子如何实现 Python剪绳子实现代码

    本篇文章小编给大家分享一下Python剪绳子实现代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 题目:剪绳子 给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数, ...

  6. 【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)

    文章目录 剪绳子 I 题目描述 思路 && 代码 1. 动态规划 O(n2n^2n2).O(n) 2. 最优解:数学方法 O(n).O(1) 二刷 剪绳子 II 题目描述 思路 &am ...

  7. 【LeetCode】剑指 Offer 14. 剪绳子

    [LeetCode]剑指 Offer 14. 剪绳子 文章目录 [LeetCode]剑指 Offer 14. 剪绳子 两道题目的区别在于第二题 n 的取值范围更大 package offer;publ ...

  8. 剪绳子 算法_[校招-算法题]动态规划

    动态规划(Dynamic Programming)是面试中非常常见的一种算法,可以解决很多复杂问题. 核心算法: 定义状态:dp[i],一个数组,具体几维根据问题定. 状态转移方程:dp[i] = b ...

  9. 14- I、 剪绳子(cuttingRope)

    14- I. 剪绳子(cuttingRope) 1. python class Solution:def cuttingRope(self, n: int) -> int:if not n:re ...

最新文章

  1. LUT 查表反色处理
  2. linux c 内核 warning: the frame size of 1040 bytes is larger than 1024 bytes
  3. Spring Cloud构建微服务架构(六)高可用服务注册中心
  4. CSS设置文字的划线
  5. .NET WinForm程序中给DataGridView表头添加下拉列表实现数据过滤
  6. 新冠患者样本单细胞测序文献汇总
  7. java catch自定义异常_Laravel - 自定义处理程序中的Catch异常
  8. ubuntu vscode通过cmake配置c++和VS2019一样 进行调试
  9. [互联网面试笔试汇总C/C++-9] 实现赋值运算符函数-剑指offer
  10. OSPF的多域配置-要点总结
  11. LinkLab 链接
  12. Bzoj1208 宠物收养所
  13. rtmp协议分析(Message 消息,Chunk分块)
  14. 实战篇:VMware Workstation 虚拟机安装 Linux 系统
  15. 学校的计算机是作文,我在学校作文
  16. 致广大而尽精微,极高明而道中庸
  17. 腾讯清凉云dd win 7
  18. 史上最全的用Python操控手机APP攻略!建议收藏!
  19. 阿里云(三) Ubuntu系统下mysql卸载
  20. C语言字符串转换为整数

热门文章

  1. 用java实现图片合并与折叠
  2. 微软自带dns服务器,微软改进Windows 10加密DNS服务器配置(DoH) 现在设置起来更方便...
  3. 在Windows程序中打开控制台的程序
  4. 2021年煤矿井下爆破考试内容及煤矿井下爆破考试资料
  5. 通过替换音效文件,实现在安卓手机上使用wp/nokia/wm10按键键盘声音
  6. java字符转转长整型_P104 将数字字符串转换成长整型整数 ★★
  7. javac错误:javac不是内部或外部命令 也不是可运行的程序 解决方法
  8. CDN网站加速的原理和流程
  9. Revit建模软件:如何在Revit中准确放置族组件?
  10. EMV技术学习和研究(三)应用初始化读应用数据