AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3099. 伐木工

中等通过率 39% · 提交 879 · 通过 344
贪心数学动态规划

小慕有一根长度为X米的木材,他需要将木材切割成若干段,每段长度都是正整数,然后出售这些木材段,总售价为各段长度的乘积。他也可以选择不切割,直接出售整根木材。 小慕想知道,在尽可能少切割的前提下,如何获得最大的收益?

提示:带虚线的词点一下有通俗解释。

输入描述

木材的长度 (X<=50)

输出描述

输出最优收益时的各个树木长度,以空格分割,按升序排列

示例

示例 1

输入

10

输出

3 3 4

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
伐木工切割示例(X=10) 整根树木(长度10) 不切割:收益 = 10 3米 3米 4米 切割成3、3、4:收益 = 3×3×4 = 36(最大) 其他切法: 2、2、2、4 → 2×2×2×4=32(更小) 5、5 → 5×5=25(更小) 3、3、2、2 → 3×3×2×2=36(但多切一刀) 结论:切2刀得3、3、4,收益最大且切割最少
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「伐木工」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。