剑指offer14——剪绳子

2023-12-24 16:08
文章标签 绳子 offer14

本文主要是介绍剑指offer14——剪绳子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

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

 

class Solution {
public:int cutRope(int number) {if(number < 2)return 0;if(number == 2)return 1;if(number == 3)return 2;int timesOf3 = number / 3; if(number - timesOf3 * 3 == 1)timesOf3 -= 1;int timesOf2 = (number - timesOf3 * 3) / 2;int ans = pow(3, timesOf3) * pow(2, timesOf2);return ans;}
};

 

这篇关于剑指offer14——剪绳子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532356

相关文章

OpenGL/GLUT实践:弹簧-质量-阻尼系统模拟摆动的绳子和布料的物理行为(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 一维弹性物体模拟2.1.1 质点类(Mass)2.1.2 弹簧类(Spring)2.1.3 模拟类(RopeSimulation)2.1.4 openGL实现 2.2 二维弹性物体模拟2.2.1 模拟类改进(1) Simulation1 类(2) ClothSimulation 类 2.2.2 o

剪绳子(动态规划和贪婪算法)

题目: 把长度为n的绳子剪成m段(n>1,m>1),每段绳子的长度记为k[1],...k[m],则每段绳子的长度的最大乘积是多少?例如身子长度为8时,剪成2,3,3三段得到的乘积最大,为18。 思路: 方法1:动态规划的思想 假设长度为n的绳子被剪成若干段后,各段长度的最大乘积为f(n)。一刀下去可能的位置有1,2,...,n-1,j将绳子分为长度为i和n-i的两段,则f(n)=max{f

剑指Offer14 调整数组顺序使奇数位于偶数前面

题目: 输入一个整数数组,实现一个函数来调整该数组中的数字顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 分析: 这个题最简单也是最暴力的方法就是从前往后遍历,遇到偶数就将其后面的数往前移动一个位置,然后把当前的这个放入数组的最后。当然他的时间复杂度就很大了,首先是遍历了整个数组,其次移动每一个数字,所以他的时间复杂度是O(n2)。 那么接下来我就想怎么能优化一下,前面

百度笔试题:绳子最多覆盖多少个点

版权所有。所有权利保留。 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123711 百度笔试题: 数轴上从左到右有n个点,a[0] ,a[1],…,a[n-1],给定一根长度为L绳子,求绳子最多覆盖其中几个点?

博弈---ZOJ 2083 Win the Game(染绳子)

原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2083 大意:两个人分别对n条绳子染 每次染m长 最后染不下的输,问先手胜负 思路:每一条绳子看做一个子问题(求每个绳子的SG再异或就是整个事件的SG),每条绳子 染的m的段 左右两端各一段, 分别求这左右两端的SG再异或 通过SG打表或递归求出整个绳子的各地方的

我只好去找了一根绳子系着它的脖子

我特别感动的生活 今天的我特别感动的生活,我觉得他的一生很不幸,嘴后悔莫及,叫它跟上我走,耳朵感慨地说,我只好去找了一根绳子系着它的脖子拖着它向小店走去,我们又怎么会受这些苦呢,眼睛也说,还有双足飞龙和科多兽(我就是这么认为的),为更多的广大市民服务。 巨魔为代表的兽族骑着各色怪兽,这不人类和巨魔吗,然后再一看主人公,主人病倒后就不能再看电视了,虽然外域时代已经过去一年多了,商家们,我就又想

java编程之计算3000绳子每天剪一半,绳子短于5米需要时间

/**假如有一条绳子长3000米,每天减去一半,请问需要花费几天时间,绳子的长度会短于5米?**/class time{public static void main(String args[]){double length=3000; //初始化变量int day=0; while(length>5){ //while循环,当绳子长大于5时,执行一下语句l

编程题:剪绳子

题目: 给一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1且m>1,2 ≤ n ≤ 60),每段绳子的长度记为k[0],k[1],…,k[m-1]。请问k[0] * k[1] * … * k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 输入示例: 8 输出示例: 18 规定: ①输入给了

剑指offer剪绳子;leetcode:LCR 131. 砍竹子 I

现需要将一根长为正整数 bamboo_len 的竹子砍为若干段,每段长度均为正整数。请返回每段竹子长度的最大乘积是多少。 示例 1: 输入: bamboo_len = 12输出: 81 提示: 2 <= bamboo_len <= 58 注意:本题与主站 343 题相同:. - 力扣(LeetCode) 根据数学经验,绳子一定是各部分分成等分才可能乘出来值最大。 int cu

ACWING25. 剪绳子(剑指offer,数学/dp)

给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]k[1] … k[m] 可能的最大乘积是多少? 例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。 样例 输入:8 输出:18 思路: 直观的思路是在确定分了多少段的前提下,分的越平均越好