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

二,分析
绳子长度n=1时,返回空

n=2时,能剪成2段,1+1。此时乘积1

n=3时,能剪成2段,2+1. 此时乘积2
也可剪成3段,1+1+1 。 此时乘积1

n=4时,能剪成2段,2+2 。此时乘积4
或3+1。此时乘积3
也可剪成3段,1+1+2 。此时乘积2
也可剪成4段,1+1+1+1。此时乘积1

n=5时,能剪成2段,2+3 。此时乘积6
也可剪成3段,2+1+2 。此时乘积4
也可剪成4段,1+1+1+2。此时乘积2
也可剪成5段,1+1+1+1+1 。此时乘积1

我们发现,当n>=5时,3(n−3)≥2(n−2)
因此,要尽可能多的剪3。

例如,假设我们拿到的n=8
8-3=5
再拿着5去剪,由于5=5
所以继续剪3
5-3=2
此时2<5,不剪了
8被分成3,3,2三段,乘积为18

三,代码

我们用k来计数,一共剪了几个3出来。

剪绳子(python)相关推荐

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

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

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

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

  3. 【算法】【动态规划篇】第5节:剪绳子问题

    本期任务:介绍算法中关于动态规划思想的几个经典问题 [算法][动态规划篇]第1节:0-1背包问题 [算法][动态规划篇]第2节:数字矩阵问题 [算法][动态规划篇]第3节:数字三角形问题 [算法][动 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Windbg学习 (0x0012) 命令-批处理命令程序
  2. 聊一聊-JAVA 泛型中的通配符 T,E,K,V,?
  3. 主页被篡改修正方法(续)
  4. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...
  5. 59、crontab用法简介
  6. java 中创建数据端口_java 如何在服务器端用socket创建一个监听端口,并对接受的数据进行处理,端口号为3333,请高手指点一下...
  7. android开发,设置listview的高度无效
  8. oracle rtrim(),Oracle ltrim() rtrim() 函数详细用法
  9. MTK 驱动---(9)emmc 分区管理
  10. 华中科技大学2005年计算机组成原理试题,华中科技大学200年计算机组成原理考研试题.doc...
  11. python中引入包的时候报错AttributeError: module ‘sys‘ has no attribute ‘setdefaultencoding‘解决方法?
  12. 【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
  13. pythoncad_pythonCAD
  14. ajax返回String类型导致的flowplayer报错p.replace is not a function问题
  15. 【思维导图】演绎推理和归纳推理基础概念
  16. android 科大讯飞语音播报简单集成
  17. Python爬虫浏览器标识库
  18. 接口测试第三课(HTTP协议简介) -- 转载
  19. mysql中TINYINT的取值范围
  20. Augustus指南(Trainning部分)

热门文章

  1. 卜算子.咏梅 陆游
  2. 电话交换机tdmx2000dx硬件配置说明
  3. 过去的过去,未来的未来
  4. 使用Mac自带的局域网远程控制其他Mac
  5. 小程序打包体积优化策略
  6. 机器学习:随机梯度下降法
  7. 云时代,网络攻击已经“鸟枪换炮”,你的企业安全还在按兵不动?
  8. 敲开bp神经网络之门(二,mfcc中使用,c#)
  9. Voting Disks的管理
  10. redis的setex key seconds value命令的bug