剑指Offer14-II.剪绳子II C++
1、题目描述
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1
示例 2:
输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36
(这个题与前一个题的区别是,这个题大数运算,不能用动态规划)
2、VS2019上运行
使用贪心算法
贪心算法
#include <iostream>
using namespace std;class Solution {
public:int cuttingRope(int n) {// 如果 n 小于等于 3,则直接返回 n - 1,因为长度为 2 和 3 时,不剪切乘积最大。if (n <= 3) return n - 1;// 如果 n 等于 4,则直接返回 4,因为长度为 4 时,将其剪成 2x2 的乘积最大。if (n == 4) return 4;long res = 1; // 初始化结果变量为 1,用于计算乘积。while (n > 4){res *= 3; // 每次乘以 3res %= 1000000007; // 取模防止溢出n -= 3; // n 减去 3}// 最后 n 的值只有可能是:2、3、4。// 而 2、3、4 能得到的最大乘积恰恰就是自身值// 因为 2、3 不需要再剪了(剪了反而变小);// 4 剪成 2x2 是最大的,2x2 恰恰等于 4return res * n % 1000000007;}
};int main() {Solution sol;int n;cout << "Enter the length of the rope: ";cin >> n;int maxProduct = sol.cuttingRope(n);cout << "Maximum product of the rope after cutting is: " << maxProduct << endl;return 0;
}
Enter the length of the rope: 10
Maximum product of the rope after cutting is: 36
3、解题思路
- 为什么选择剪成长度为 3 的绳子?这涉及到一个数学推导:
- 假设将绳子剪成长度为 x 和 n - x,其中 x 为一段的长度,n 为总绳子长度。我们希望求得这种剪法下的乘积最大值。
- 可以证明,当 x = n/3 时,乘积最大。对于长度为 n 的绳子:
- 1.当 n = 3k 时,我们将绳子分成长度为 x = n/3 = k 的三段,此时乘积为 x^3 = (n/3)^3。
2.当 n = 3k + 1 时,我们将绳子分成长度为 x = n/3 = k 和 x + 1 = k + 1 的两段,此时乘积为 x * (x + 1)^2 = (n/3) * ((n/3) + 1)^2。
3.当 n = 3k + 2 时,我们将绳子分成长度为 x = n/3 = k 和 x + 2 = k + 2 的两段,此时乘积为 x * (x + 2) = (n/3) * ((n/3) + 2)。
可以观察到,在 n mod 3 = 0, 1, 2 时,乘积都可以表示为 x 的形式乘以某个因子。而要使乘积最大,我们需要选择 x 为整数,因此选择 x 最接近 n/3,并且取整数部分,即 x = floor(n/3)。
相关文章:
剑指Offer14-II.剪绳子II C++
1、题目描述 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如&am…...
2023企业微信0day漏洞复现以及处理意见
2023企业微信0day漏洞复现以及处理意见 一、 漏洞概述二、 影响版本三、 漏洞复现小龙POC检测脚本: 四、 整改意见 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#x…...
【IMX6ULL驱动开发学习】04.应用程序和驱动程序数据传输和交互的4种方式:非阻塞、阻塞、POLL、异步通知
一、数据传输 1.1 APP和驱动 APP和驱动之间的数据访问是不能通过直接访问对方的内存地址来操作的,这里涉及Linux系统中的MMU(内存管理单元)。在驱动程序中通过这两个函数来获得APP和传给APP数据: copy_to_usercopy_from_user …...
day-21 代码随想录算法训练营(19)二叉树part07
530.二叉搜索树的最小绝对差 思路一:二叉搜索树的中序遍历必为升序数组,加入数组后计算相邻两个数差值,即可求出最小绝对差 思路二:同样的思路,中序遍历,直接使用指针记录上一个节点,同时更新…...
【Vue3】依赖注入
provide 和 inject 是 Vue.js 中用于实现依赖注入的两个关联功能。它们允许你在祖先组件中提供数据,然后在子孙组件中注入这些数据,实现组件之间的数据共享和传递。 provide:provide 是一个选项,你可以在父组件中通过它来提供数据…...
Vue 引入 Element-UI 组件库
Element-UI 官网地址:https://element.eleme.cn/#/zh-CN 完整引入:会将全部组件打包到项目中,导致项目过大,首次加载时间过长。 下载 Element-UI 一、打开项目,安装 Element-UI 组件库。 使用命令: npm …...
照耀国产的星火,再度上新!
国产之光,星火闪耀 ⭐ 新时代的星火⭐ 多模态能力⭐ 图像生成与虚拟人视频生成⭐ 音频生成与OCR笔记收藏⭐ 助手模式更新⭐ 插件能力⭐ 代码能力⭐ 写在最后 ⭐ 新时代的星火 在这个快速变革的时代,人工智能正迅猛地催生着前所未有的革命。从医疗到金融…...
大语言模型LLM的一些点
LLM发展史 GPT模型是一种自然语言处理模型,使用Transformer来预测下一个单词的概率分布,通过训练在大型文本语料库上学习到的语言模式来生成自然语言文本。 GPT-1(117亿参数),GPT-1有一定的泛化能力。能够用于和监督任务无关的任务中。GPT-2(…...
leetcode810. 黑板异或游戏(博弈论 - java)
黑板异或游戏 lc 810 - 黑板异或游戏题目描述博弈论 动态规划 lc 810 - 黑板异或游戏 难度 - 困难 原题链接 - 黑板异或游戏 题目描述 黑板上写着一个非负整数数组 nums[i] 。 Alice 和 Bob 轮流从黑板上擦掉一个数字,Alice 先手。如果擦除一个数字后,剩…...
算法练习Day48|198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III
LeetCode: 198. 打家劫舍 - 力扣(LeetCode) 1.思路 边界思维,只有一个元素和两个元素的初始化考虑 当元素数大于3个时, 逆向思维,是否偷最后一个元素,倒序得出递推公式dp[i] Math.max(dp[i - 1], dp[i …...
什么是设计模式?常用的设计有哪些?
单例模式工厂模式代理模式(proxy) 一、设计模式 设计模式是前辈们经过无数次实践所总结的一些方法(针对特定问题的特定方法) 这些设计模式中的方法都是经过反复使用过的。 二、常用的设计模式有哪些? 1、单例模式&…...
clickHouse部署
docker仓库地址 https://hub.docker.com/ 1、docker环境搭建 # 1.先安装yml yum install -y yum-utils device-mapper-persistent-data lvm2 # 2.设置阿里云镜像 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 3.查…...
Flutter实现倒计时功能,秒数转时分秒,然后倒计时
Flutter实现倒计时功能 发布时间:2023/05/12 本文实例为大家分享了Flutter实现倒计时功能的具体代码,供大家参考,具体内容如下 有一个需求,需要在页面进行显示倒计时,倒计时结束后,做相应的逻辑处理。 实…...
【hadoop】windows上hadoop环境的搭建步骤
文章目录 前言基础环境下载hadoop安装包下载hadoop在windows中的依赖配置环境变量 Hadoop hdfs搭建创建hadfs数据目录修改JAVA依赖修改配置文件初始化hdfs namenode启动hdfs 前言 在大数据开发领域中,不得不说说传统经典的hadoop基础计算框架。一般我们都会将hadoo…...
一周在榜9本计算机专业新书
本周在榜计算机专业新书9本。 1、扩散模型从原理到实战 开启AI绘画新时代!AIGC大模型来临,配套赠送Diffusion视频课程! HuggingFace平台学习实战,常春藤盟校数据科学硕士与算法工程师带你从理论到实战,了解、掌握扩散…...
CSS变形与动画(二):perspctive透视效果 与 preserve-3d 3d效果(奥运五环例子)
文章目录 perspective 3d透视效果preserve-3d 3d嵌套效果例子 奥运五环 backface-visibility 背面效果 perspective 3d透视效果 perspective 指定了观察者与 z0 平面的距离,使具有三维位置变换的元素产生透视效果。z>0 的三维元素比正常大,而 z<0 …...
[论文笔记]Glancing Transformer for Non-Autoregressive Neural Machine Translation
引言 这是论文Glancing Transformer for Non-Autoregressive Neural Machine Translation的笔记。 传统的非自回归文本生成速度较慢,因为需要给定之前的token来预测下一个token。但自回归模型虽然效率高,但性能没那么好。 这篇论文提出了Glancing Transformer,可以只需要一…...
视觉学习(七)---Flask 框架下接口调用及python requests 实现json字符串传输
在项目实施过程中需要与其他系统进行接口联调,将图像检测的结果传递给其他系统接口,进行逻辑调用。这中间的过程可以通过requests库进行实现。 1.安装requests库 pip install requests2.postman 接口测试 我们先通过postman 了解下接口调用࿰…...
unity编写树形结构的文件管理页面
项目中需要实现点击“”按钮展开对应分类下的所有训练科目,再次点击“–”按钮将对应分类下的训练科目隐藏并收起整个面板。对此,编写一个类,将其挂载到树形结构的父类上,代码如下: using UnityEngine; using UnityEn…...
基于单片机的家用智能浇灌系统
1、开发环境 keil5,STM32CubeMX、Altium Designer 2、硬件清单 单片机:STM32F051K8Ux 土壤湿度传感器:TL - 69 温度传感器:DS18B20(数字传感器直接输出数字信号) OLED屏幕:OLED12864、 水…...
告别 API 收费!OpenClaw 对接 Ollama,本地大模型免费无限用
OpenClaw 连接 Ollama 本地模型教程 前置准备 已安装并能正常打开 OpenClaw Windows 客户端OpenClaw 顶部 Gateway 状态保持在线电脑可正常联网,能访问 Ollama 官网磁盘空间充足(本地模型占用空间较大)提前确认待下载的模型名称(…...
为Claude Code配置Taotoken解决密钥被封与Token不足的烦恼
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Claude Code配置Taotoken解决密钥被封与Token不足的烦恼 应用场景类,聚焦于使用Claude Code的编程助手用户ÿ…...
LLaMA论文里没细说的三个‘炼丹’细节:RMSNorm、SwiGLU和RoPE到底怎么用?
LLaMA论文里没细说的三个‘炼丹’细节:RMSNorm、SwiGLU和RoPE到底怎么用? 在构建现代大型语言模型时,论文往往聚焦于宏观架构和性能对比,而将关键实现细节留给读者自行揣摩。LLaMA论文中提到的RMSNorm、SwiGLU和RoPE三项改进&…...
初创团队如何借助Taotoken控制台实现API密钥与访问审计
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何借助Taotoken控制台实现API密钥与访问审计 对于初创技术团队而言,在快速迭代产品、频繁调用大模型API的同…...
Moonlight iOS/tvOS:在苹果设备上畅玩PC游戏的终极流媒体方案
Moonlight iOS/tvOS:在苹果设备上畅玩PC游戏的终极流媒体方案 【免费下载链接】moonlight-ios GameStream client for iOS/tvOS 项目地址: https://gitcode.com/gh_mirrors/mo/moonlight-ios Moonlight iOS/tvOS 是一款专为苹果生态系统设计的开源游戏流媒体…...
如何快速掌握智能电源管理:macOS用户的完整配置指南
如何快速掌握智能电源管理:macOS用户的完整配置指南 【免费下载链接】SleeperX MacBook prevent idle/lid sleep! Hackintosh sleep on low battery capacity. 项目地址: https://gitcode.com/gh_mirrors/sl/SleeperX SleeperX是一款专为macOS用户设计的开源…...
如何掌握AMD Ryzen硬件调试:面向初学者的完整指南与3个实战场景
如何掌握AMD Ryzen硬件调试:面向初学者的完整指南与3个实战场景 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: h…...
LabVIEW布尔控件机械动作选错,程序逻辑全乱?手把手教你6种动作的实战用法(附避坑案例)
LabVIEW布尔控件机械动作全解析:从入门到避坑实战指南 引言:为什么你的LabVIEW按钮总是不听话? 在LabVIEW开发过程中,布尔控件就像电路中的开关,看似简单却暗藏玄机。许多开发者都有过这样的经历:精心设计的…...
RK3568与RK3399深度对比:从架构到实战,边缘计算如何选型?
1. 项目概述:为什么我们需要重新审视RK3568与RK3399?最近在给一个边缘计算项目做硬件选型,客户的需求很明确:需要一块性能足够、接口丰富、功耗可控且长期供货稳定的核心板。在国产处理器的候选名单里,瑞芯微的RK3399和…...
除了STM32,你的CubeMX项目还能一键迁移到哪些国产MCU?APM32F030实测与选型思考
STM32生态迁移实战:从CubeMX到国产MCU的全链路决策指南 当ST官方涨价函在技术群里刷屏时,我正用CubeMX给APM32F030生成工程模板。屏幕上的进度条流畅运行,就像三年前操作STM32F030时一样——这个细节突然让我意识到:国产MCU的兼容…...
