剑指offer-动态规划-贪心算法--剪绳子-python
题目描述
输入描述:
输入一个数n,意义见题面。(2 <= n <= 60)
思路:动态规划: 有这几个特殊情况:当n为0时,没发裁输出为0n为1时,最大分子为1,输出1
n为2时,最大分子为2,输出2
n为3时,最大分子为2,输出2
然后从4开始遍历,将切割的所有可能找出来,,由于当i大于n//2时,就不用在计算了,重复计算,然后与之相乘
temp = prod[i] * prod[n - i]
最后将结果与max作比较,放入数组中去。
class Solution:
def cutRope(self, number):
# write code here
# res=1
if number <= 1:
return 0
elif number <= 2:
return 1
elif number <= 3:
return 2
prod = [0, 1, 2, 3] for n in range(4, number + 1):
maxs = 0
for i in range(1, n//2):
temp = prod[i] * prod[n - i]
if temp > maxs:
maxs = temp
prod.append(maxs) return prod[-1]
算法时间复杂度O(n2),空间复杂度O(n)。
思路:贪心算法: 等号在n=5时成立。
所以应把绳子剪成尽量多的3,让剩下的都是2这样的组合。
class Solution:
def cutRope(self, number):
# write code here
# res=1
if number <= 1:
return 0
elif number <= 2:
return 1
elif number <= 3:
return 2
elif number <= 4:
return 4
timeofthree = number//3
if number -timeofthree*3 ==1:
timeofthree-=1
timeoftwo = (number-timeofthree*3)//2 return pow(3,timeoftwo)*pow(2,timeoftwo)

剑指offer-动态规划-贪心算法--剪绳子-python的更多相关文章
- 剑指Offer——动态规划算法
剑指Offer--动态规划算法 什么是动态规划? 和分治法一样,动态规划(dynamic programming)是通过组合子问题而解决整个问题的解. 分治法是将问题划分成一些独立的子问题,递归地求解 ...
- 剑指OFFER数据结构与算法分类
目录 数据结构 算法 数据结构 数组 有序二维数组查找 数组相对位置排序 数组顺时针输出 把数组排成最小的数 数组中的逆序对 扑克牌顺子 数组中重复的数字 构建乘积数组 链表 链表反向插入ArrayL ...
- 剑指Offer——二分查找算法
剑指Offer--二分查找算法 前言 本片博文主要讲解查找算法的相关知识.重点介绍二分查找. 二分查找算法是在有序数组中用到的较为频繁的一种查找算法,在未接触二分查找算法时,最通用的一种做法是,对数组 ...
- 剑指offer笔记面试题14----剪绳子
题目:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,n > 1 并且m > 1),每段绳子的长度记为k[0], k[1], ...k[m].请问k[0] x k[1] x .. ...
- 剑指offer—第二章算法之快速排序
算法:排序和查找(二分查找,归并排序,快速排序),位运算等. 查找:顺序查找,哈希查找,二叉排序树查找,哈希表. 二分查找可以解决:"旋转数组中的最小数字","数字在排序 ...
- 剑指offer—第二章算法之二分查找(旋转数组的最小值)
旋转数组的最小数字 题目:把一个数组最开始的若干元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如:数组{3,4,5,1,2}为{1,2,3,4, ...
- 【剑指Offer】平衡二叉树 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 日期 题目地址:https://www.nowcoder.co ...
- 《剑指offer》内容总结
(1)剑指Offer——Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...
- 剑指 Offer 14- II. 剪绳子 II + 贪心 + 数论 + 快速幂
剑指 Offer 14- II. 剪绳子 II 题目链接 因为有取模的操作,动态规划中max不能用了,我们观察:正整数从1开始,但是1不能拆分成两个正整数之和,所以不能当输入. 2只能拆成 1+1,所 ...
随机推荐
- Halcon10.0 + VS2010
新建一个C++空项目 添加c1.pp 复制example1.cpp的代码 配置include\lib\bin\Linker之后
- [CSP-S模拟测试]:Six(数学)
题目传送门(内部题85) 输入格式 一个正整数$N$. 输出格式 一个数表示答案对$1000000007$取模后的结果 样例 样例输入1: 样例输出1: 样例输入2: 样例输出2: 样例输入3: 样例 ...
- centos7 修改ali yum源
centos7 修改yum源为阿里源,某下网络下速度比较快 首先是到yum源设置文件夹里 安装base reop源 cd /etc/yum.repos.d 接着备份旧的配置文件 sudo mv Cen ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area
A: 给你一个矩阵求'/' 和 '\' 围成的图形,简单签到题,有一些细节要考虑. 题解:一行一行的跑,遇到'/'和'\' 就加0.5, 在面积里面的'.' 就加1.用一个flag来判断是否在围住的图 ...
- libusb开发者指南
本文档描述libusb的API,以及如何开发USB应用.1 介绍 1.1 概览本文档描述libusb-0.1的API和USB相关内容.1.2 当前OS支持Linux 2.2或以上FreeBSD/N ...
- php 判断字符串包含
PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用.PHP判断字符串的包含,可以使用PHP的内置函数 strstr,strpos,stristr直接进行判断.也可以通过e ...
- 三、robotframework封装的关键字-数据库使用
1. 从数据库查询结果: 数据库连接:Connect To Database Using Custom Params 用法:Connect To Database U ...
- 《ECMAScript6 入门》
NVM Babel babel-core:提供 Babel 的 API,可以获得转码后的代码和抽象语法树. babel-polyfill:Babel 只能转换语法,如果想用类似 Promise.Gen ...
- iOS OC中桥接swift第三方库
swift中有一些比较好的框架,比如绘图框架charts,最近项目中刚好用到,通过Pod的方式直接导入,xcode会自动生成charts-swift.h的文件,然后在需要导入的地方import < ...
- 快速入门分布式消息队列之 RabbitMQ(3)
目录 目录 前文列表 前言 通道 Channel 一个基本的生产者消费者实现 消费者 生产者 运行结果 应用预取计数 应用 ACK 机制 最后 前文列表 快速入门分布式消息队列之 RabbitMQ(1 ...