20211030.剪绳子
描述
给你一根长度为 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.剪绳子相关推荐
- 剑指offer:面试题14- II. 剪绳子 II
题目:剪绳子 II 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]* ...
- 剑指offer:面试题14- I. 剪绳子
题目:剪绳子 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]*k[1 ...
- leetcode算法题--剪绳子 II
原题链接:https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/ 相关题目:剪绳子 1.循环求余法 //(x ^ a) % p; long re ...
- NOJ——1672剪绳子(博弈)
[1672] 剪绳子 时间限制: 500 ms 内存限制: 65535 K 问题描述 已知长度为n的线圈,两人依次截取1~m的长度,n, m为整数,不能取者为输. 输入 输入n, m:( 0 < ...
- 剪绳子python_Python剪绳子如何实现 Python剪绳子实现代码
本篇文章小编给大家分享一下Python剪绳子实现代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 题目:剪绳子 给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数, ...
- 【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)
文章目录 剪绳子 I 题目描述 思路 && 代码 1. 动态规划 O(n2n^2n2).O(n) 2. 最优解:数学方法 O(n).O(1) 二刷 剪绳子 II 题目描述 思路 &am ...
- 【LeetCode】剑指 Offer 14. 剪绳子
[LeetCode]剑指 Offer 14. 剪绳子 文章目录 [LeetCode]剑指 Offer 14. 剪绳子 两道题目的区别在于第二题 n 的取值范围更大 package offer;publ ...
- 剪绳子 算法_[校招-算法题]动态规划
动态规划(Dynamic Programming)是面试中非常常见的一种算法,可以解决很多复杂问题. 核心算法: 定义状态:dp[i],一个数组,具体几维根据问题定. 状态转移方程:dp[i] = b ...
- 14- I、 剪绳子(cuttingRope)
14- I. 剪绳子(cuttingRope) 1. python class Solution:def cuttingRope(self, n: int) -> int:if not n:re ...
最新文章
- LUT 查表反色处理
- linux c 内核 warning: the frame size of 1040 bytes is larger than 1024 bytes
- Spring Cloud构建微服务架构(六)高可用服务注册中心
- CSS设置文字的划线
- .NET WinForm程序中给DataGridView表头添加下拉列表实现数据过滤
- 新冠患者样本单细胞测序文献汇总
- java catch自定义异常_Laravel - 自定义处理程序中的Catch异常
- ubuntu vscode通过cmake配置c++和VS2019一样 进行调试
- [互联网面试笔试汇总C/C++-9] 实现赋值运算符函数-剑指offer
- OSPF的多域配置-要点总结
- LinkLab 链接
- Bzoj1208 宠物收养所
- rtmp协议分析(Message 消息,Chunk分块)
- 实战篇:VMware Workstation 虚拟机安装 Linux 系统
- 学校的计算机是作文,我在学校作文
- 致广大而尽精微,极高明而道中庸
- 腾讯清凉云dd win 7
- 史上最全的用Python操控手机APP攻略!建议收藏!
- 阿里云(三) Ubuntu系统下mysql卸载
- C语言字符串转换为整数
热门文章
- 用java实现图片合并与折叠
- 微软自带dns服务器,微软改进Windows 10加密DNS服务器配置(DoH) 现在设置起来更方便...
- 在Windows程序中打开控制台的程序
- 2021年煤矿井下爆破考试内容及煤矿井下爆破考试资料
- 通过替换音效文件,实现在安卓手机上使用wp/nokia/wm10按键键盘声音
- java字符转转长整型_P104 将数字字符串转换成长整型整数 ★★
- javac错误:javac不是内部或外部命令 也不是可运行的程序 解决方法
- CDN网站加速的原理和流程
- Revit建模软件:如何在Revit中准确放置族组件?
- EMV技术学习和研究(三)应用初始化读应用数据