剑指offer面试题【14】----剪绳子【Python】【动态规划】【贪婪算法】

2023-11-12

题目描述

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

代码实现

动态规划解法

按照从下而上的顺序计算,先得到f(2),f(3),再计算f(4),f(5),f(n)=max(f(i)xf(n-i)),0<i<n。

def dynamic_programing(n):
    if n<2:
        print(0)
    if n==2:
        print(1)
    if n==3:
        print(2)
    l=[0,1,2,3] #l中存放着长度为i的绳子剪成若干段长度的最大乘积,i从0开始
    for i in range(4,n+1):
        max=0
        for j in range(1,i//2+1):
            temp=l[j]*l[i-j]
            if temp>max:
                max=temp
        l.append(max)
    print(l[n])
#测试    
dynamic_programing(8)

输出 

贪婪算法

当n>=5的时候,尽可能多的剪长度为3的绳子,将长度为n的绳子一值减到长度为4的时候,停止

def greedy_algorithm(n):
    if n<2:
        return 0
    if n==2:
        return 1
    if n==3:
        return 2
    multi_3=0
    while n>4:
        multi_3+=1
        n-=3
    return 3**multi_3*n
print(greedy_algorithm(8))

输出

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剑指offer面试题【14】----剪绳子【Python】【动态规划】【贪婪算法】 的相关文章

  • 【剑指Offer】(字符串)左旋转字符串(翻转操作)

    题目链接 https www nowcoder com practice 12d959b108cb42b1ab72cef4d36af5ec tpId 13 tqId 11196 tPage 1 rp 1 ru ta coding inter
  • 剑指 Offer 28. 对称的二叉树 -- 递归

    0 题目描述 leetcode原题链接 剑指 Offer 28 对称的二叉树 1 递归解法 对称二叉树定义 对于树中 任意两个对称节点 L L L 和 R R R 一定有
  • python 读取dll、exe文件版本终极方案

    网上找到的大都是调用win32api 但是这个api很多dll识别失败了 推荐使用wind32com 它兼容性比较强 1 使用win32api import os import win32api def getFileVersion fil
  • 剑指offer Java实现 第五题

    第五题 请实现一个函数 将一个字符串中的每个空格替换成 20 例如 当字符串为We Are Happy 则经过替换之后的字符串为We 20Are 20Happy 实现代码 public static String replaceSpace
  • Python的10个常用代码简写技术

    今天我给大家整理了一份10个程序员常用的代码简写技术 看懂一种是入门 全懂就是大神 你能知道几个呢 1 三元操作符 当想写if else语句时 使用三元操作符来代替 const x 20 let answer if x gt 10 简写 c
  • 【Python】Python基础知识总结

    欢迎来到Python专栏 Python基础知识总结 o o 嗨 我是小夏与酒 博客主页 小夏与酒的博客 该系列文章专栏 Python学习专栏 文章作者技术和水平有限 如果文中出现错误 希望大家能指正 欢迎大家关注 目录 Python基础知识
  • 剑指 Offer 55 - I. 二叉树的深度(java+python)

    输入一棵二叉树的根节点 求该树的深度 从根节点到叶节点依次经过的节点 含根 叶节点 形成树的一条路径 最长路径的长度为树的深度 例如 给定二叉树 3 9 20 null null 15 7 3 9 20 15 7 返回它的最大深度 3 提示
  • Python基础07

    Python基础07 学习07 嵌套函数 内部函数 嵌套函数 在函数内部定义的函数 上面程序中 f2 就是定义在f1 函数内部的函数 f2 的定义和调用都在f1 函数内部 嵌套函数的使用情况 1 封装 数据隐藏 外部无法访问 嵌套函数 2
  • 数组17--机器人的运动范围

    数组17 机器人的运动范围 jz66 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 地上有一个m行和n列的方格 一个机器人从坐标0 0的格子开始移动 每一次只能向左 右 上 下四个方向移动一格 但是不能进入行坐标和列坐标的数
  • 剑指 Offer 27. 二叉树的镜像 -- 递归

    0 题目描述 leetcode原题链接 剑指 Offer 27 二叉树的镜像 1 递归算法 根据二叉树镜像的定义 考虑递归遍历 d f s mathrm dfs dfs 二叉树 交换每个节点的左 右子节点 即可生成 二叉树的镜像 递归解析
  • Pandas玩转数据透视表,用它就够了~

    大家好 我是丁小杰 对于数据透视表 相信对于 Excel 比较熟悉的小伙伴都知道如何使用它 并了解它的强大之处 而在pandas中要实现数据透视就要用到pivot table了 导入示例数据 首先导入演示的数据集 import pandas
  • 【Python】PyCharm中调用另一个文件的函数或类

    欢迎来到Python专栏 PyCharm中调用另一个文件的函数或类 o o 嗨 我是小夏与酒 博客主页 小夏与酒的博客 该系列文章专栏 Python学习专栏 文章作者技术和水平有限 如果文中出现错误 希望大家能指正 欢迎大家关注 目录 Py
  • python--模块导入

    目录 模块简介 模块导入的两种方式 方式一 import 方式二 from import 模块简介 1 什么是模块 模块就是一系列功能的结合体 可以直接使用 2 为什么要用模块 极大地提升开发效率 拿来主义 gt gt gt 站在巨人的肩膀
  • 剑指 Offer 05. 替换空格(java+python)

    请实现一个函数 把字符串 s 中的每个空格替换成 20 示例 1 输入 s We are happy 输出 We 20are 20happy 限制 0 lt s 的长度 lt 10000 java StringBuilder StringB
  • 剑指Offer 22. 链表中倒数第k个节点(Easy)/ 19. 删除链表的倒数第 N 个结点(Medium)/ ListNode调用!!!

    LeetCode 19 删除链表的倒数第 N 个结点 Medium 题目链接 题解 链表中倒数第 k 个节点 双指针 清晰图解 思路 代码 Definition for singly linked list class ListNode d
  • 把字符串转换成整数(字符串)

    题目描述 将一个字符串转换成一个整数 要求不能使用字符串转换整数的库函数 数值为0或者字符串不是一个合法的数值则返回0 输入描述 输入一个字符串 包括数字字母符号 可以为空 输出描述 如果是合法的数值表达则返回该数字 否则返回0 思路一 p
  • python基础之数据类型知识(1)

    注释 注解 解释 说明文字而已 特征 注释只是用于说明的文字不会影响内容本身 作用 1 用于添加说明文字 方便阅读 2 用于调试程序 排查错误 分类 单行注释 多行注释 内容 或者 内容 代码 print hello world print
  • 剑指 Offer(第2版)面试题 35:复杂链表的复制

    剑指 Offer 第2版 面试题 35 复杂链表的复制 剑指 Offer 第2版 面试题 35 复杂链表的复制 解法1 模拟 剑指 Offer 第2版 面试题 35 复杂链表的复制 题目来源 48 复杂链表的复刻 解法1 模拟 算法 复制原
  • 剑指 Offer(第2版)面试题 34:二叉树中和为某一值的路径

    剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 解法1 深度优先搜索 剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 题目来源 47 二叉
  • Python编程:从入门到实践(基础知识)

    第一章 起步 计算机执行源程序的两种方式 编译 一次性执行源代码 生成目标代码 解释 随时需要执行源代码 源代码 采用某种编程语言编写的计算机程序 目标代码 计算机可执行 101010 编程语言分为两类 静态语言 使用编译执行的编程语言 C

随机推荐

  • qt源代码在线查看

    说明 有时候需要查看qt源代码的实现 但是qt项目本身过于庞大 打开太麻烦了 但是在软件的开发中 最多跳转到qt源代码的头文件部分 在线查看qt源代码的链接 链接如下 https code woboq org qt5 功能介绍 查看代码结构
  • 自己归纳整理的ARM THUMB指令机器码表

    有个项目需要分析ARM THUMB指令的机器码 网上没有搜索到整理好的机器码表 只好自己把相关指令的机器码归纳整理出来 这里分享给大家 THUMB指令并不多 只有六十多条 这个数字真的是非常了不起 51都一百三十多条呢 可能这张表对于大多数
  • 成长记录——数据库获取数据转换格式并暴露接口

    需求 新功能增加 完成软件新界面增加 包含逻辑与数据 实现 获取数据库内容 为接口定义对应的数据格式 完成数据结构组成 数据获取接口实现 数据更改后写入数据库接口实现 获取数据库内容 首先 已经默认拥有了数据库 并内部已有数据 定义数据接口
  • 用Obsidian打造一个强大的写作辅助系统

    用Obsidian打造一个强大的写作辅助系统 Github https github com zazaji obsidian SenGener 用法 在写作的过程中 当文思枯竭的时候 按下快捷键 可以定义自己的快捷键 然后AI自动根据之前写
  • 基于ISS关键点的ICP算法在Matlab中的实现

    基于ISS关键点的ICP算法在Matlab中的实现 ICP Iterative Closest Point 算法是一种常用的点云配准方法 用于将两个或多个点云之间进行对齐 ISS Intrinsic Shape Signatures 关键点
  • IDEA运行Maven打包项目编译报错:不再支持源选项 5。请使用 6 或者更高版本。不再支持目标选项 1.5。请使用 1.6 或更高版本。

    IDEA运行Maven打包项目编译报错 不再支持源选项 5 请使用 6 或者更高版本 不再支持目标选项 1 5 请使用 1 6 或更高版本 最近学习大数据 利用mapreduce进行WordCount单词计数测试 在IDEA中建好Maven
  • 猿创征文|【云原生之Docker】使用Docker部署Flare个人导航网页

    猿创征文 云原生之Docker 使用Docker部署Flare个人导航网页 一 卷首语 二 Flare介绍 1 Flare介绍 2 Flare的硬件配置要求 3 Flare的特点 三 检查本地docker环境 1 检查docker服务状态
  • SQL语法:TRUNCATE 清空表

    删除记录的方式汇总 根据条件删除 DELETE FROM tb name WHERE options ORDER BY fields LIMIT n 全部删除 表清空 包含自增计数器重置 TRUNCATE tb name 细节剖析 删除ex
  • (20200920)编程每日一题_C程序设计_operator & and &&

    1 Description codes to infer the difference betwwen operator and operator in C 2 solutions include
  • Android实现高德地图轨迹回放,android开发遇到的技术难点

    写在前面 准备 官方文档解读 创建应用 地图api引入 权限添加 效果展示 过程实现 地图初始化 定位 显示标记点 点平滑移动 添加呼吸点 写在结尾 写在前面 本篇文章是对近期工作项目中集成高德地图轨迹回放和单 多点标记功能的一个总结 方便
  • DS静态查找之顺序查找

    题目描述 给出一个队列和要查找的数值 找出数值在队列中的位置 队列位置从1开始 要求使用带哨兵的顺序查找算法 输入 第一行输入n 表示队列有n个数据 第二行输入n个数据 都是正整数 用空格隔开 第三行输入t 表示有t个要查找的数值 第四行起
  • Magisk工具使用指南

    对于一般玩机用户 Magisk官方提供的发布版本即可满足要求 但对于高级开发者来说这远远不够 我们不仅仅是满足于使用 更要学会定制面具 最好的能完全理解面具的核心架构以便于自己也能写出来一套和面具差不多的工具 这才是我们研究面具最根本的原因
  • 小程序修改顶部导航栏的颜色(电量、时间、胶囊)

    wx setNavigationBarColor frontColor ffffff backgroundColor ffffff 注意 其中frontColor的值只能是 ffffff或者 000000在设置的时候必须结合backgrou
  • STM32实现精准us级延时

    前言 在上一篇文章已经讲了使用通用定时器的方式实现ms和s级别的延时 为什么没有us级别的呢 因为在示波器测量时 没有计算好程序执行的时间 这次找到了方法 测试出通用定时器延时的精准性 同时 也查找了网上常用的使用系统定时器非中断的方式进行
  • 你是外包,麻烦不要偷吃零食,注意素质..

    我自己没经历过外包 靠自己的所见所闻可能写出来的东西会很主观 所幸我有不少外包的读者 还有几个在外包工作或工作过的朋友 在跟她们深度交流之后 这这里聊一下我自己的一些看法 注 本文不代表所有外包公司 依旧存在部分主观意识 目前市场上比较知名
  • 【VMD-LSTM】变分模态分解-长短时记忆神经网络研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 变分模态分解算法 1 2 LSTM 2 运行结果 编辑 3 参考文献 4 Python代码实现 1
  • js项目练习第二课

    百度输入法
  • C# 三种代码注释方式

    1 常规注释方式 单行注释 以 符号开始 任何位于 符号后的本行文字都视为注释 块注释 以 开始 结束 任何介于这对符号之间的文字块都视为注释 2 XML注释方式 Extensible Markup Language 可扩展标记语言 符号是
  • Java初级面试常见面试题

    下面的这些不够看 可以访问我的语雀专栏 https www yuque com greedy 9i38g tzpwui 面试题 文章目录 JavaSE Java基本数据类型大小 JAVA中 和 两种符号 抽象类不能创建对象 那么抽象类中是否
  • 剑指offer面试题【14】----剪绳子【Python】【动态规划】【贪婪算法】

    题目描述 给你一根长度为n的绳子 请把绳子剪成m段 m和n都是整数 n gt 1并且m gt 1 每段绳子的长度记为k 0 k 1 k m 请问k 0 k 1 k m 可能的最大乘积是多少 例如 当绳子的长度为8时 我们把它剪成长度分别为2