题目描述
乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 5050 。
现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。
给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。
输入输出格式
输入格式:
共二行。
第一行为一个单独的整数N表示砍过以后的小木棍的总数,其中 N≤65
(管理员注:要把超过 50 的长度自觉过滤掉,坑了很多人了!)
第二行为 N 个用空个隔开的正整数,表示 N 根小木棍的长度。
输出格式:
一个数,表示要求的原始木棍的最小可能长度
输入输出样例
输入样例#1:
9
5 2 1 5 2 1 5 2 1
输出样例#1:
6
题解
好久没有写过题了,终于有时间写了几道
这道题写搜索的过程其实不难,难就难在如何剪枝缩短时间
题目所求的是最小木棍长度,因为木棍长度是一样的,所以我们可以直接搜索答案
在输入的时候先累加木棍长度的总和,因为一根木棍也是符合条件的,这可能就是答案
(记得将木棍长度大于50的数据忽略)
接着对木棍长度进行一个从大到小