小木棍 [数据加强版](DFS剪枝)

该博客介绍了如何使用深度优先搜索(DFS)解决一个数学问题,即通过已知的被切割小木棍长度,找出原始木棍的最小可能长度。博主强调了在搜索过程中进行剪枝以优化时间效率,并提供了输入输出格式和样例。文章重点在于DFS的剪枝策略,包括在搜索前累加木棍长度并忽略超过50的长度,以及在搜索过程中判断总和是否能被答案整除等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 5050 。

现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。

给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度

输入输出格式

输入格式:

共二行。

第一行为一个单独的整数N表示砍过以后的小木棍的总数,其中 N≤65

(管理员注:要把超过 50 的长度自觉过滤掉,坑了很多人了!)

第二行为 N 个用空个隔开的正整数,表示 N 根小木棍的长度。

输出格式:

一个数,表示要求的原始木棍的最小可能长度

输入输出样例

输入样例#1:

9
5 2 1 5 2 1 5 2 1

输出样例#1:

6

题解

好久没有写过题了,终于有时间写了几道

这道题写搜索的过程其实不难,难就难在如何剪枝缩短时间

题目所求的是最小木棍长度,因为木棍长度是一样的,所以我们可以直接搜索答案

在输入的时候先累加木棍长度的总和,因为一根木棍也是符合条件的,这可能就是答案

(记得将木棍长度大于50的数据忽略)

接着对木棍长度进行一个从大到小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值