剪绳子

问题描述:给你一根长度为n的绳子,请把绳子剪成m段(m和n都是整数,n>1并且m>1), 每段绳子的长度记为k[0],k[1],...,k[m]. 请问k[0]*k[1]*...*k[m]可能的最大乘积是多少?

首先本题可以用贪婪算法和动态规划算法求解,虽然贪婪算法的时间复杂度和空间复杂度都比动态规划算法要小,但是要求有一定数学基础,需要定制合理的贪婪策略(面试的时候如果换一道题一般情况下想不出来的),所以个人感觉贪婪算法在本题中没有参考价值,故本题用动态规划的方法来求解。

本方法思想:用动态规划自下而上的计算,先算出n为1、2、3。。的最大乘积,知道小的以后在去算更大的乘积。比如n为4时候最大的可能只能在1*3,2*2之间取得;n为5时,只能在f(1)*f(4),f(2)*f(3)之间取得,而f(2),f(3),f(4)之前均已经求出。

持续更新...

代码附下

Java实现:

package 剪绳子;
/*** 给你一根长度为n的绳子,请把绳子剪成m段(m和n都是整数,n>1并且m>1) 每段绳子的长度记为k[0],k[1],...,k[m].* 请问k[0]*k[1]*...*k[m]可能的最大乘积是多少?* @author user 动态规划*/

public class Test {public static void main(String[] args) {int len = 10;System.out.println(maxLen(len));}/*** @param len绳子的长度* @return*/private static double maxLen(int len) {// lenCut[i]表示长度为i个的最优解 lenCut[3]比较特殊double lenCut[] = new double[len + 1];lenCut[0] = 0;lenCut[1] = 1;lenCut[2] = 2;lenCut[3] = 3;//初始化到3是因為3>1*2,其本身比分割的大,所以當分割比3大的數字時候,如5可以分成2,3,3就不繼續往下分割了if (len < 2) {return 0;} else if (len == 2) {return 1;} else if (len == 3) {return 2;} else {for (int i = 4; i <= len; i++) {double max = 0;for (int j = 1; j <= i / 2; j++) {double temp = lenCut[j] * lenCut[i - j];if (max < temp) {max = temp;}}lenCut[i] = max;}}return lenCut[len];}
}

持续更新...欢迎赞赏!

https://blog.csdn.net/ustcer_93lk/article/details/80369712

如果有问题,欢迎大家留言,有更好的方法也期待大家告知。

12、剪绳子——剑指offer——动态规划相关推荐

  1. java剪绳子_14. 剪绳子(剑指 Offer 题解Java版)

    本文转载自[微信公众号:五角钱的程序员,ID:xianglin965]经微信公众号授权转载,如需转载与原文作者联系 文章目录 14. 剪绳子1. 题目链接2.题目描述3.解题思路3.1贪心3.2动态规 ...

  2. 算法系列——割绳子(剑指offer)

    题目 题目链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof/ 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n ...

  3. [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串

    1 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,2 ...

  4. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  5. 算法题解(剑指Offer篇)

    文章目录 栈与队列(简单) *剑指 Offer 09. 用两个栈实现队列 - 12.27 剑指 Offer 30. 包含min函数的栈 - 12.27 链表(简单) *剑指 Offer 06. 从尾到 ...

  6. 剑指offer刷题记录 python3 Java

    剑指offer刷题记录 python3 Java 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 03. 数组中重复的数字 [★]剑指 Of ...

  7. C#LeetCode刷题-剑指Offer

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-剑指Offer | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode剑指Offer ...

  8. 力扣OJ 剑指 Offer(1-30)

    目录 剑指 Offer 03. 数组中重复的数字 剑指 Offer 04. 二维数组中的查找 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 剑指 Offer 07. ...

  9. 《剑指offer》每日三题

    这里使用的是题库: https://leetcode.cn/problem-list/xb9nqhhg/?page=1 目录 剑指 Offer 07. 重建二叉树 剑指 Offer 14- I. 剪绳 ...

最新文章

  1. Mysql高级调优篇——第一章:调优必备索引知识
  2. iOS 7 — navigationController is setting the contentInset and ContentOffset of my UIScrollView
  3. easypoi导出数值型_SpringBoot使用EasyPoi进行数据导入导出Excel(一)
  4. opencv图像灰化_opencv读入图像、灰度化、归一化、向量化
  5. 把自定义url配置到SAP Fiori Launchpad上打开
  6. Spring4.x集成xfire1.26 问题汇总
  7. idea base64encoder没有jar包_老师,免费版的IDEA为啥不能使用Tomcat?
  8. 『BDD100K的labels文件json转YOLOV5要求的txt文件』【包括识别交通灯】(代码编写)
  9. 基于Android的图书管理系统
  10. android开发 自我优势_android开发简历自我评价填写样本
  11. 强大视频电影播放软件——乐鱼影音盒!
  12. 集成软件开发环境WipeOut
  13. 爬取动态网站阿里巴巴(1688)商家公司名称及联系方式
  14. java计算抛物线的标准方程_抛物线方程公式大全_抛物线的四种标准方程_抛物线公式_抛物线方程及图像_高中数学知识点总结网...
  15. 万卷书 - 研究巴菲特 [Buffettology]
  16. 史上最全体检表、检验报告解析
  17. 关于jQuery中的SuperSlide插件的使用
  18. 基于pyserial,用python34、PyQt5写的一个串口软件
  19. 针对 store_name 字段
  20. iBOMA’s Case Study—Health Care

热门文章

  1. m4v视频如何转换mp4格式,简单操作一学就会
  2. 磁盘调度算法中磁头的控制
  3. 由浅入深讲解显示存储计算机基础原理
  4. java中轻量级数据库ORM框架:JOOQ
  5. Linux 复制文件夹或文件到另一台电脑上
  6. xray扫描器的使用
  7. linux命令查询cpu,Linux查看CPU信息方法(超简单)
  8. 数据库存储过程(全网最全)
  9. 荣耀x30i究竟值不值得买?不同角度来说说
  10. 司铭宇讲师:浙江某汽车配件公司《中层干部管理与领导力提升》内训