【C++动态规划】1547. 切棍子的最小成本|2116

【C++动态规划】1547. 切棍子的最小成本|2116

本文涉及知识点

C++动态规划

LeetCode1547. 切棍子的最小成本

有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置。例如,长度为 6 的棍子可以标记如下:

在这里插入图片描述

给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置。
你可以按顺序完成切割,也可以根据需要更改切割的顺序。
每次切割的成本都是当前要切割的棍子的长度,切棍子的总成本是历次切割成本的总和。对棍子进行切割将会把一根木棍分成两根较小的木棍(这两根木棍的长度和就是切割前木棍的长度)。请参阅第一个示例以获得更直观的解释。
返回切棍子的 最小总成本 。
示例 1:

在这里插入图片描述

输入:n = 7, cuts = [1,3,4,5]
输出:16
解释:按 [1, 3, 4, 5] 的顺序切割的情况如下所示:

在这里插入图片描述

第一次切割长度为 7 的棍子,成本为 7 。第二次切割长度为 6 的棍子(即第一次切割得到的第二根棍子),第三次切割为长度 4 的棍子,最后切割长度为 3 的棍子。总成本为 7 + 6 + 4 + 3 = 20 。
而将切割顺序重新排列为 [3, 5, 1, 4] 后,总成本 = 16(如示例图中 7 + 4 + 3 + 2 = 16)。
示例 2:

输入:n = 9, cuts = [5,6,1,4,2]
输出:22
解释:如果按给定的顺序切割,则总成本为 25 。总成本 <= 25 的切割顺序很多,例如,[4, 6, 5, 2, 1] 的总成本 = 22,是所有可能方案中成本最小的。

提示:

2 <= n <= 106
1 <= cuts.length <= min(n - 1, 100)
1 <= cuts[i] <= n - 1
cuts 数组中的所有整数都 互不相同

动态规划

将0和n加到cuts中,并排序。m = cuts.size

动态规划的状态表示

dp[i][j] 表示切割端点分别为costs[i],costs[j]的木棍,切割完的最小成本。空间复杂度:O(mm)

动态规划的填表顺序

len = j-i
len = 2 to m

动态规划的转移方程

for(int k = i+1; k < j ;i++)
MinSelf(dp[i][j] ,cost[j]-cost[i]+dp[i][k]+dp[i][j])
单个状态转移时间复杂度:O(m),总时间复杂度:O(mmm)

动态规划的初始化

dp[i][i+1] = 0,其它全部是 INT_MAX/2。

动态规划的返回值

dp[0].back()

代码

核心代码

classSolution{public:intminCost(int n, vector<int>& cuts){ cuts.emplace_back(0); cuts.emplace_back(n);sort(cuts.begin(), cuts.end());constint m = cuts.size(); vector<vector<int>>dp(m,vector<int>(m, INT_MAX /2));for(int i =0; i+1< m; i++){ dp[i][i +1]=0;}int j =0;for(int len =2; len <= m; len++){for(int i =0;(j = i + len -1)< m; i++){for(int k = i +1; k < j; k++){ dp[i][j]=min(dp[i][j], cuts[j]- cuts[i]+ dp[i][k]+ dp[k][j]);}}}return dp[0].back();}};

单元测试

int n; vector<int> cuts;TEST_METHOD(TestMethod11){ n =7, cuts ={1,3,4,5};auto res =Solution().minCost(n, cuts);AssertEx(16, res);}TEST_METHOD(TestMethod12){ n =9, cuts ={5,6,1,4,2};auto res =Solution().minCost(n, cuts);AssertEx(22, res);}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步ZEEKLOG学院,听白银讲师(也就是鄙人)的讲解。
https://edu.ZEEKLOG.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.ZEEKLOG.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

Read more

【脉脉】AI 创作者 xAMA 知无不言:在浪潮里,做会发光的造浪者

【脉脉】AI 创作者 xAMA 知无不言:在浪潮里,做会发光的造浪者

🎬 个人主页:秦苒& ❄专栏传送门:《C语言》 🍀指尖燃热血,代码铸锋芒;以信仰破局,向顶峰生长 🎬秦苒&的简介: 前言:由于篇幅原因,本节内容我们分两节讲。欢迎大家在评论区讨论留言! 文章目录 * AI 创作者 xAMA|在技术浪潮里,做会发光的造浪者 * 前言 * 一、重新定义:AI 创作者的三个核心身份 * 二、破局能力:AI 创作者的 “硬核生存法则” * 三、真实困局:从脉脉话题看 AI 创作者的 “行业痛点” * 四、实操指南:如何成为 AI 创作者,或加入这场对话? * 五、未来已来:AI 创作者的 “生态机会” * 结尾

By Ne0inhk

【AI大模型学习日志6:深度拆解字节跳动豆包系列——国民级全模态AI的普惠化突围之路】

在上一篇AI大模型学习日志中,我们完整拆解了xAI旗下的Grok系列,它凭借X平台实时数据原生接入、反过度对齐的极客风格,在海外巨头垄断的市场中撕开了差异化突围的口子,也让我们看到了大模型赛道“长板极致化”的破局逻辑。而当我们把视线拉回国内大模型赛道,真正把“普惠化”做到极致、彻底改写国内C端AI格局的产品,必然是字节跳动旗下的豆包系列。 在豆包诞生之前,国内大模型赛道始终陷入“对标GPT堆参数、拼跑分、做企业服务”的同质化内卷,普通用户想要用上AI,要么面对高昂的付费门槛,要么要忍受有限的免费额度、复杂的操作流程,AI技术始终停留在极客圈层与企业场景,无法真正走进大众的日常生活。而豆包从诞生之日起,就跳出了这条内卷路径,以“让顶尖AI能力零门槛走进10亿中国人的日常”为核心使命,用两年多时间成长为国内月活破2亿的国民级AI产品,成为国内C端通用大模型的绝对标杆。 本文所有核心信息均以字节跳动官方技术白皮书、产品发布会、官方技术论文与开源文档为唯一基准,严格遵循系列日志的统一框架,从官方定义与核心基本面、完整发展历程、解决的行业核心痛点与落地场景、核心优势与现存不足四大维度,完整拆

By Ne0inhk
腾讯三箭齐发!企业微信、WorkBuddy、Qclaw 共建AI办公新生态

腾讯三箭齐发!企业微信、WorkBuddy、Qclaw 共建AI办公新生态

腾讯三箭齐发!企业微信、WorkBuddy、Qclaw 共建AI办公新生态 📢 重磅消息! 2026年3月,腾讯在AI Agent领域连出重拳!3月8日:企业微信宣布接入OpenClaw3月9日:腾讯正式上线 WorkBuddy(桌面智能体)3月9日:腾讯电脑管家推出 Qclaw(微信AI助手) 三箭齐发!腾讯全面布局AI办公生态! 🔥 事件回顾 Day 1:企业微信宣布接入 OpenClaw 2026年3月8日,企业微信官方宣布支持接入OpenClaw智能机器人! Day 2:腾讯 WorkBuddy 正式上线 2026年3月9日,腾讯旗下全场景AI智能体WorkBuddy正式发布,完全兼容OpenClaw生态! 同期:腾讯电脑管家 Qclaw 亮相 腾讯电脑管家官方推出Qclaw——一款"随时随地,微信一下,帮你搞定一切"的AI助手! 🤖 腾讯AI三剑客对比 产品定位入口特点企业微信版OpenClaw接入企业微信企业级应用WorkBuddy桌面智能体工作台桌面客户端深度办公自动化Qclaw微信AI助手微信/电脑管家轻量级、

By Ne0inhk
AI 也能写爬虫?基于 Bright Data + Warp CLI 的网页抓取实战

AI 也能写爬虫?基于 Bright Data + Warp CLI 的网页抓取实战

🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 一、引言 1.1 写过爬虫的人,大概率都踩过这些坑 1.2 AI 已经很会写代码了,但它真的能“写爬虫”吗? 1.3 让 AI 不只是“写代码”,而是“驱动抓取” 二、技术与工具介绍 2.1 为什么“普通 AI + 爬虫代码”很难跑通真实网页? 2.2 Bright Data:爬虫工程真正的“底层基础设施” 2.3

By Ne0inhk