12、剪绳子——剑指offer——动态规划
剪绳子
问题描述:给你一根长度为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——动态规划相关推荐
- java剪绳子_14. 剪绳子(剑指 Offer 题解Java版)
本文转载自[微信公众号:五角钱的程序员,ID:xianglin965]经微信公众号授权转载,如需转载与原文作者联系 文章目录 14. 剪绳子1. 题目链接2.题目描述3.解题思路3.1贪心3.2动态规 ...
- 算法系列——割绳子(剑指offer)
题目 题目链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof/ 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n ...
- [剑指 offer] -- 动态规划-- 面试题46. 把数字翻译成字符串
1 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,2 ...
- 剑指offer第二版答案详细版(带详细解题思路)
1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...
- 算法题解(剑指Offer篇)
文章目录 栈与队列(简单) *剑指 Offer 09. 用两个栈实现队列 - 12.27 剑指 Offer 30. 包含min函数的栈 - 12.27 链表(简单) *剑指 Offer 06. 从尾到 ...
- 剑指offer刷题记录 python3 Java
剑指offer刷题记录 python3 Java 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 03. 数组中重复的数字 [★]剑指 Of ...
- C#LeetCode刷题-剑指Offer
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-剑指Offer | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode剑指Offer ...
- 力扣OJ 剑指 Offer(1-30)
目录 剑指 Offer 03. 数组中重复的数字 剑指 Offer 04. 二维数组中的查找 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 剑指 Offer 07. ...
- 《剑指offer》每日三题
这里使用的是题库: https://leetcode.cn/problem-list/xb9nqhhg/?page=1 目录 剑指 Offer 07. 重建二叉树 剑指 Offer 14- I. 剪绳 ...
最新文章
- Mysql高级调优篇——第一章:调优必备索引知识
- iOS 7 — navigationController is setting the contentInset and ContentOffset of my UIScrollView
- easypoi导出数值型_SpringBoot使用EasyPoi进行数据导入导出Excel(一)
- opencv图像灰化_opencv读入图像、灰度化、归一化、向量化
- 把自定义url配置到SAP Fiori Launchpad上打开
- Spring4.x集成xfire1.26 问题汇总
- idea base64encoder没有jar包_老师,免费版的IDEA为啥不能使用Tomcat?
- 『BDD100K的labels文件json转YOLOV5要求的txt文件』【包括识别交通灯】(代码编写)
- 基于Android的图书管理系统
- android开发 自我优势_android开发简历自我评价填写样本
- 强大视频电影播放软件——乐鱼影音盒!
- 集成软件开发环境WipeOut
- 爬取动态网站阿里巴巴(1688)商家公司名称及联系方式
- java计算抛物线的标准方程_抛物线方程公式大全_抛物线的四种标准方程_抛物线公式_抛物线方程及图像_高中数学知识点总结网...
- 万卷书 - 研究巴菲特 [Buffettology]
- 史上最全体检表、检验报告解析
- 关于jQuery中的SuperSlide插件的使用
- 基于pyserial,用python34、PyQt5写的一个串口软件
- 针对 store_name 字段
- iBOMA’s Case Study—Health Care