剪绳子(十三)

2024-01-18 15:38
文章标签 十三 绳子

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

题目
给你一根长度为 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

算法:

  • 当n<5时,我们会发现,无论怎么剪切,乘积product <= n,n为4时,product最大为2*2=4;
  • 当n>=5时,可以证明2(n-2)>n并且3(n-3)>n。而且3(n-3)>=2(n-2)。所以我们应该尽可能地多剪长度为3的绳子段。
    -2 * 2 * 2 < 3 * 3,可以推出分解的式子最多可以出现两个2
    综上,选用尽量多的3,直到剩下2或者4时,用2。
class Solution {public int maxProductAfterCutting(int n){if(n <= 3) return 1 * (n - 1);int res = 1;if(n % 3 == 1){res = 4;n -= 4;}if(n % 3 == 2){res = 2;n -= 2;}while(n > 0){res *= 3;n -=3;}return res;}
}

这篇关于剪绳子(十三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

JavaSE(十三)——函数式编程(Lambda表达式、方法引用、Stream流)

函数式编程 函数式编程 是 Java 8 引入的一个重要特性,它允许开发者以函数作为一等公民(first-class citizens)的方式编程,即函数可以作为参数传递给其他函数,也可以作为返回值。 这极大地提高了代码的可读性、可维护性和复用性。函数式编程的核心概念包括高阶函数、Lambda 表达式、函数式接口、流(Streams)和 Optional 类等。 函数式编程的核心是Lambda

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

十三、我们应当怎样做需求分析:查询报表分析

在我以往的用例分析中,使用这样格式的用例模式,对于大多数业务操作流程来说是得心应手的,但对于有些功能来说总感觉不对劲。感觉不对劲的,就是那些查询、汇总与报表功能。对于这部分功能,需要我们描述的不是什么操作流程,而更重要的是那些数据项、数据来源、报表格式、数据链接,以及使用者、使用频率的说明。而这些,在以往的用例说明格式中统统都没有,怎么办呢?俗话说“东西是死的人是活的”,把我们的用例格式改改吧。

Kafka【十三】消费者消费消息的偏移量

偏移量offset是消费者消费数据的一个非常重要的属性。默认情况下,消费者如果不指定消费主题数据的偏移量,那么消费者启动消费时,无论当前主题之前存储了多少历史数据,消费者只能从连接成功后当前主题最新的数据偏移位置读取,而无法读取之前的任何数据。如果想要获取之前的数据,就需要设定配置参数或指定数据偏移量。 【1】起始偏移量 在消费者的配置中,我们可以增加偏移量相关参数auto.offset.re

超详细!!!electron-vite-vue开发桌面应用之应用更新版本提示(十三)

云风网 云风笔记 云风知识库 当项目应用包更新后应该主动提示用户更新,这是采用electron-updater进行更新提示 一、安装依赖 npm i electron-updater 二、配置安装包更新地址 electron-builder.json5添加配置 // 配置安装包更新地址publish: [{provider: "generic",url: "http://w

2024 Python3.10 系统入门+进阶(十三):函数进阶

目录 一、匿名函数(lambda)1.1 定义匿名函数及其简单运用1.2 collections模块之defaultdict详解(拓展) 二、生成器函数2.1 生成器函数2.2 生成器结合关键字in使用时注意事项2.3 yield from语法 三、函数执行原理四、递归函数五、高阶函数柯里化5.1 函数合成5.2 函数柯里化 一、匿名函数(lambda) 1.1 定义匿名函数及

Flink实例(114):自定义时间和窗口的操作符(十三)自定义窗口分配器之设定窗口开始与结束时刻

1. 自定义窗口分配器(flink1.11.2) package com.atguigu.exercise.ETL.caiutilimport java.text.SimpleDateFormatimport java.utilimport java.util.{Collections, Date}import org.apache.flink.api.common.Executio

Spark学习之路 (十三)SparkCore的调优之资源调优JVM的基本架构

《2021年最新版大数据面试题全面开启更新》 欢迎关注github《大数据成神之路》   目录 一、JVM的结构图 1.1 Java内存结构 1.2 如何通过参数来控制各区域的内存大小 1.3 控制参数 1.4 JVM和系统调用之间的关系 二、JVM各区域的作用 2.1 Java堆(Heap) 2.2 方法区(Method Area) 2.3 程序计数器(Program Counter R

ArcGIS Pro SDK (十三)地图创作 3 特殊图层

ArcGIS Pro SDK (十三)地图创作 3 特殊图层 文章目录 ArcGIS Pro SDK (十三)地图创作 3 特殊图层1 高程表面图层1.1 创建具有地表图层的场景1.2 创建新的高程表面1.3 将自定义高程表面设置为 Z 感知图层1.4 将高程源添加到现有高程表面图层1.5 从地图中获取高程表面图层和高程源图层1.6 查找高程表面图层1.7 移除高程表面图层1.8 从曲面获

【硬刚ES】ES基础(十三)Dynamic Template和Index Template

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。