《剑指offer》14--剪绳子(整数拆分)[C++]

目录

题目描述

贪心算法

输出结果


题目描述


把一根绳子剪成多段,并且使得每段的长度乘积最大。

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。

示例 1:

输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。
示例 2:

输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。
说明: 你可以假设 n 不小于 2 且不大于 58。

贪心算法


设n分成k份时乘积最大,则要令d (n/k)^k / dk等于零,或令d k*log(n/k) / dk等于零。求出来k=n/e,所以每份应尽量接近e=2.7,因此尽量凑3。

尽可能多剪长度为 3 的绳子,并且不允许有长度为 1 的绳子出现。如果出现了,就从已经切好长度为 3 的绳子中拿出一段与长度为 1 的绳子重新组合,把它们切成两段长度为 2 的绳子。

证明:当 n >= 5 时,3(n - 3) - n = 2n - 9 > 0,且 2(n - 2) - n = n - 4 > 0。因此在 n >= 5 的情况下,将绳子剪成一段为 2 或者 3,得到的乘积会更大。又因为 3(n - 3) - 2(n - 2) = n - 5 >= 0,所以剪成一段长度为 3 比长度为 2 得到的乘积更大。

#include<iostream>
#include<vector>
using namespace std;//计算各数位的和
class Solution {
public:int integerBreak(int n) {if (n < 2) return 0;if (n == 2) return 1;if (n == 3) return 2;int T3 = n / 3;if (n % 3 == 1) T3--;int T2 = (n - T3 * 3) / 2;return ((int)pow(3, T3)) * ((int)pow(2, T2));}
};int main()
{Solution test;int result = test.integerBreak(10);std::cout << "mian result:" << result << std::endl;return 0;
}

输出结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android开发技术总结,附项目源码

今天本文主要讲解&#xff1a; APK文件反编译 什么是反编译如何防止反编译APK文件的基本构造 APK加固的方案原理 APK加固总体架构APK打包基本流程Dex文件的意义 AES加密项目实战 APK加固项目实战APK脱壳技术实战 一.APK文件反编译 1.什么是反编译 定义&#xff1a; 利用…

Java后端核心——Servlet

目录 一.概述 二.基础实现 1.导入坐标 2.定义实现类 3.注解 4.访问Servlet 三.执行流程 四.生命周期 1.加载和实例化 2.初始化 3.请求处理 4.服务终止 五.方法 1.init 2.service 3.destroy 4.getServletInfo 5.getServletConfig 六.体系结构 七.urlPatter…

前端小案例——登录界面(正则验证, 附源码)

一、前言 实现功能&#xff1a; 提供用户名和密码输入框。当用户提交表单时&#xff0c;阻止默认提交行为。使用正则表达式验证用户输入的内容&#xff0c;判断输入的是有效的邮箱地址还是身份证号码。根据验证结果&#xff0c;在输入框下方显示相应的提示信息。 实现逻辑&a…

ZYNQ--PS_PL交互(AXI_HP)

AXI_HP接口 通过AXI_HP接口,可直接通过AXI_FULL协议向DDR中通过DMA传输数据。 BD设计 AXI_HP接口设置 AXI_Master代码 module axi_full_master #(parameter C_M_TARGET_SLAVE_BASE_ADDR = 32h40000000,parameter integer C_M_AXI_BURST_LEN = 16,parameter integer …

DiskMirror-spring-boot-starter 技术|

DiskMirror-spring-boot-starter 技术 diskMirror 实现了 SpringBoot 的 starter 能够集成到 SpringBoot 中。 DiskMirror 的 starter&#xff0c;通过引入此类&#xff0c;可以直接实现 diskMirror 在 SpringBoot 中的自动配置&#xff0c;接下来我们将使用案例逐步的演示 d…

[202403]xavier nx環境配置流程記錄

xavier nx環境配置流程記錄 引言1.板子環境2.設置默認python和pip2.安裝torch和torchvision2.1 下載正確的whl安裝文件2.2 開始安裝2.3 查看torch安裝情況 3.問題記錄3.1 問題1&#xff1a;Running pip as the root user can result in broken permissions3.2 問題2&#xff1a…

Java Web(八)--Servlet(三)

会话技术 为什么需要&#xff1f; 每个用户在使用浏览器与服务器进行会话的过程中&#xff0c;不可避免各自会产生一些数据&#xff0c;服务器要想办法为每个用户保存这些数据&#xff1b; 用户通过浏览器访问 Web 应用时&#xff0c;服务器都需要保存和跟踪用户的状态&…

外部存储空间

1. 存储在外部 私有 存储空间 /storage/emulated/0/Android/data/com.tiger.chapter06/files/Download/1709636015824.txt package com.tiger.chapter06;import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; impo…

linux kernel物理内存概述(六)

目录 伙伴系统 1、什么是伙伴&#xff1f; 2、伙伴系统的分配原理 3、伙伴系统回收 伙伴系统 1、什么是伙伴&#xff1f; 伙伴必须是大小相同并且在物理上连续的两个或者多个页。 2、伙伴系统的分配原理 首先根据内存分配接口函数gfp_t gfp_mask&#xff0c;找到内存分…

分布式事务Seata

分布式事务与Seata落地 一、事务基础 1.1 本地事务 事务指的就是一个操作单元&#xff0c;在这个操作单元中的所有操作最终要保持一致的行为&#xff0c;要么所有操作都成功&#xff0c;要么所有的操作都被撤销。 1.2 本地事务特性 本地事务四大特性: ACID A&#xff1a;原…

SuperPoint和SuperGlue 的算法介绍及学习应用经验分享

SuperPoint和SuperGlue 的算法介绍及学习应用经验分享 2024年01月03日 10:38186浏览 3喜欢 0评论 视频地址&#xff1a; SuperPoint和SuperGlue 的算法介绍及学习应用经验分享 好想 特征点匹配&#xff0c;为了计算位姿 特征点&#xff1a;关键点描述子&#xff08…

第五十回 插翅虎枷打白秀英 美髯公误失小衙内-mayfly-go:web 版 linux、数据库等管理平台

晁盖宋江和吴用到山下迎接雷横上山&#xff0c;宋江邀请雷横入伙&#xff0c;雷横以母亲年事已高为由拒绝了。 雷横回到郓城&#xff0c;听李小二说从东京新来了个表演的叫白秀英&#xff0c;吹拉弹唱跳&#xff0c;样样精通&#xff0c;于是雷横和李小二一起到戏院去看演出。…

Python爬虫实战第三例【三】(下)

零.前情提要&#xff1a; 没有看上一章的小伙伴&#xff0c;建议先去看上一章&#xff0c;避免有些知识点不连贯 地址&#xff1a;Python爬虫实战第三例【三】【上】-CSDN博客 在上一章&#xff0c;我们经过分析.m3u8文件和.ts文件后&#xff0c;成功爬取到了所有.ts文件的文…

冒泡经典题

&#x1f4d1;前言 本文主要是【】——简单使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff1a;狠…

RN开发搬砖经验之-Android平台下处理后退按钮事件

基本接口 利用RN 针对Android平台提供的接口 BackHandler BackHandler需要区分类组件跟函数组件的场景&#xff0c;主要是两个组件一个基于组件生命周期的&#xff0c;一个是基于hook的&#xff0c;即注册BackHandler的事件监听与移除时机写法不同。 类组件 示例代码 impor…

使用J-Link | OPENSDA 调试S32K144开发板

一、S32DS下载 使用的开发软件为S32DS&#xff0c;可以到NXP官网下载&#xff1a;链接&#xff0c;也可以通过网盘&#xff1a;链接 二、对S32K144开发板进行调试 调试方法一&#xff1a; S32K144开发板自带一个OPENSDA MCU&#xff0c;我们可以通过一根Mircro USB线连接到电…

计算机网络-第3章 数据链路层

主要内容&#xff1a;两个信道及对应的协议&#xff1a;点对点信道和广播信道&#xff0c;扩展以太网和高速以太网 本章的分组转发为局域网内的转发&#xff0c;不经过路由&#xff0c;网络层分组转为为网络与网络之间的转发&#xff0c;经过路由。局域网属于网络链路层的范围…

springboot3.x 以上,官方不建议使用spring.factories

springboot2.7.x 以上,官方不建议使用spring.factories 最近公司项目升级.需要将springcloud/springboot版本升级到2.7.x以上,再升级的过程中遇到了太多的问题.总结在了如下文章中: springboot艰难版本升级之路!! springboot 2.3.x版本升级到2.7.x版本 这篇文章就重点是梳理一…

LeetCode 热题 100 (尽量ACM模式刷) 持续更新!!!

LeetCode 热题 100 哈希hash 1 两数之和 /** 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值target的那两个整数&#xff0c;并返回它们的数组下标。* 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案…

品优购首页制作

一&#xff0c;常用模块类名命名 二&#xff0c;快捷导航shortcut制作 三&#xff0c;header制作 3.1LOGO SEO优化 3.2 搜索模块定位 四&#xff0c; nav导航制作 五&#xff0c;footer底部制作 六&#xff0c;main主体模块制作 以前书写是模块化中的公共部分 main主体模块是…