本篇文章小编给大家分享一下Python剪绳子实现代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

题目:剪绳子

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

解题思路一:基于动态规划和贪婪算法。

class Solution:

def MaxProductAfterCut(self, n):

# 动态规划

if n<2:

return 0

if n==2:

return 1

if n==3:

return 2

products=[0]*(n+1)

products[0]=0

products[1]=1

products[2]=2

products[3]=3

for i in range(4,n+1):

max=0

for j in range(1,i//2+1):

product=products[j]*products[i-j]

if product>max:

max=product

products[i]=max

#print(products)

return products[n]

def MaxProductAfterCut2(self, n):

# 贪婪算法

if n < 2:

return 0

if n==2:

return 1

if n==3:

return 2

timesOf3 = n//3

if n - timesOf3*3 == 1:

timesOf3 -= 1

timesOf2 = (n - timesOf3 * 3)//2

return (3**timesOf3) * (2**timesOf2)

if __name__=="__main__":

print(Solution().MaxProductAfterCut(8))

print(Solution().MaxProductAfterCut(10))

#print(Solution().NumberOf1(0))

print(Solution().MaxProductAfterCut2(8))

print(Solution().MaxProductAfterCut2(10))

解题思路二:基于动态规划和贪婪算法。

class Solution:

# 动态规划

def maxCut(self, n):

if n<2: return 0

if n==2: return 1

if n==3: return 2

res=[0]*(n+1)

res[0], res[1], res[2], res[3]=0, 1, 2, 3

for i in range(4, n+1):

max = 0

for j in range(1, i//2+1):

temp = res[j]*res[i-j]

if temp>max:

max = temp

res[i]=max # 由下而上

return res[n]

# 贪婪算法

def cutRope(length):

if length<2: return 0

if length==2: return 1

if length==3: return 2

timesOf3 = length // 3 # 尽可能剪出3

if length-timesOf3*3 == 1: # 如果最后余1,则留一段4分成两半

timesOf3 -= 1

timesOf2 = (length-timesOf3*3) // 2

return (3**timesOf3) * (2**timesOf2)

剪绳子python_Python剪绳子如何实现 Python剪绳子实现代码相关推荐

  1. python 1070 结绳 (25 分) 给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另

    Python 1070 结绳 (25 分) 解题思路呢就是:长度很长的绳子如果一直对折只会越折越短而且短的相较长度不长的绳子要短得多,即长绳子对折比短绳子损耗的更多,如果要想获得最后尽可能长的绳子,就 ...

  2. Python剪切板操作

    Python剪切板操作 使用情景 主要知识点 代码 使用情景 python在键盘,鼠标操作的时候,经常会涉及到到剪切板操作. 主要知识点 制作两个过程,分别实现设置剪切板,读取剪切板的保管. 代码 i ...

  3. python默认的一个代码缩进是几个空格_python缩进长度是否统一

    Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误. 在 Python 中,对于类定义.函数定义.流程控制语句.异常处理语句等, ...

  4. python函数def里面嵌套def,python菜鸟求问关于嵌套函数中作用域范围应该怎么理解?,python嵌套,直接上代码def l(l...

    python菜鸟求问关于嵌套函数中作用域范围应该怎么理解?,python嵌套,直接上代码def l(l 直接上代码def l(list): def d(): return list return d ...

  5. python绘制月亮_用python画月亮的代码是什么?

    用python画月亮的代码是什么? 用python画月亮的代码是import turtle as t t.screensize(800,600,"#483d8b")#画布尺寸和颜色 ...

  6. 调用另一个python文件中的代码

    python3.*版本下好像不一样,正确引用方法: utils是同级目录,options是文件,后面是函数 from .utils.options import parseOptions from . ...

  7. python彩票分析_数字化场景应用平台加持,开课吧学员Python挑战赛秀出代码精彩...

    来源标题:数字化场景应用平台加持,开课吧学员Python挑战赛秀出代码精彩 企业在数字化转型过程中,如何应对数字化人才短缺成为了最大挑战.同时,很多企业还意识到在外部人才争夺战日益激烈的大背景下,仅仅 ...

  8. python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  9. python怎么画条形图-python绘制条形图方法代码详解

    1.首先要绘制一个简单的条形图 import numpy as np import matplotlib.pyplot as plt from matplotlib import mlab from ...

最新文章

  1. 各种SQL在Pig中实现
  2. 【数据平台】基于pyhs2库Python作为client driver连接HiveServer
  3. oracle ssl发送邮件,使用javax.mail发送带有ssl的电子邮件
  4. Golang 协程goroutine的调度模型-MPG模式
  5. cmd小游戏编程100例_学宏程序编程,这些知识必不可少!
  6. SpringBoot:application.properties基本的参数配置
  7. 《JavaScript模式》读书笔记一:基本技巧
  8. 巧用css的border属性完成对图片编辑功能的性能优化
  9. python 返回列表中的偶数
  10. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_1_两种获取Stream流的方式...
  11. 二分查找递归、非递归实现(Python)
  12. 兄弟7895dw粉盒清零_兄弟brother打印机清零大全
  13. Steam Sdk接入
  14. 徐亦达老师机器学习课程
  15. 电脑网络wifi图标消失,图标变成灰色的解决办法之一
  16. matlab绘制二元二次曲线图,Excel:关于二次曲线直角坐标方程图像的描绘
  17. 瘟疫期间整理出万有引力的牛顿都做了哪些贡献?
  18. [译]CRF和QP的区别
  19. 荣耀6 H60-L01连接上WIFI但是无法上网
  20. java 图片效果_使用Java进行图片底片化效果处理

热门文章

  1. PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx
  2. POJ 2253 Frogger(最短路Floyd)题解
  3. A Complete List of .NET Open Source Developer Projects
  4. 注意语句顺序 防止Servlet Request Response乱码
  5. SQL Server 中的ROWID
  6. C# 用数据库记录填充树
  7. 给Repeater、Datalist和Datagrid增加自动编号列
  8. const pointer
  9. Larbin 安装遇到的问题(fedora)
  10. aMCMC for Horseshoe: algorithms