题目
描述
输入输出示例
输入
3
输出
2
1 2
解法
- 对于m个待装袋的金币,取 ⌈m/2⌉ ⌈ m / 2 ⌉ 个金币装入第一个袋子,然后递归求解
证明
- 对于一个数m,采用每次分割一半的方法,共分割出 ⌊lg2m⌋+1 ⌊ l g 2 m ⌋ + 1 个袋子
- 按照题意,我们需要给出一个k个元素的序列,这个序列有 2k 2 k 种选择元素的方法。每种选择法得出一个值。而因为需要能构造出所有可能的值,也就是要构造出 [0,m] [ 0 , m ] 内的所有值,共m+1个值,所以 k≥⌈lg2(m+1)⌉ k ≥ ⌈ l g 2 ( m + 1 ) ⌉
- 对于 m≥1 m ≥ 1 , ⌈lg2(m+1)⌉=⌊lg2m⌋+1 ⌈ l g 2 ( m + 1 ) ⌉ = ⌊ l g 2 m ⌋ + 1
- 所以我们的解法已经达到了最优