天平
Description
FJ有一架用來稱牛的體重的天平。與之配套的是N(1<=N<=40)個已知質量的砝碼(所有砝碼質量的數值都在31位二進制內)。每次稱牛時,他都把某頭奶牛安置在天平的某一邊,然后往天平另一邊加砝碼,直到天平平衡,于是此時砝碼的總質量就是牛的質量(FJ不能把砝碼放到奶牛的那邊,因為奶牛不喜歡稱體重,每當FJ把砝碼放到她的蹄子底下,她就會嘗試把砝碼踢到FJ臉上)。天平能承受的物體的質量不是無限的,當天平某一邊物體的質量大于C(1<=C<2^30)時,天平就會被損壞。
砝碼按照它們質量的大小被排成一行。并且,這一行中從第3個砝碼開始,每個砝碼的質量至少等于前面兩個砝碼(也就是質量比它小的砝碼中質量最大的兩個)的質量的和。
FJ想知道,用他所擁有的這些砝碼以及這架天平,能稱出的質量最大是多少。由于天平的最大承重能力為C,他不能把所有砝碼都放到天平上。
現在FJ告訴你每個砝碼的質量,以及天平能承受的最大質量。你的任務是選出一些砝碼,使它們的質量和在不壓壞天平的前提下是所有組合中最大的。
Input
第1行: 兩個用空格隔開的正整數,N和C。
第2…N+1行: 每一行僅包含一個正整數,即某個砝碼的質量。保證這些砝碼的質量是一個不下降序列。
Output
第1行: 一個正整數,表示用所給的砝碼能稱出的不壓壞天平的最大質量。
Sample Input
3 15
1
10
20
Sample Output
11
Data Constraint
Hint
【樣例說明】
FJ有3個砝碼,質量分別為1,10,20個單位。他的天平最多只能承受質量為15個單位的物體。用質量為1和10的兩個砝碼可以稱出質量為11的牛。這3個砝碼所能組成的其他的質量不是比11小就是會壓壞天平。
.
.
.
.
.
分析
一眼就能看出來用深搜,但純深搜必然會超時,那么我們要剪枝
從后往前搜,枚舉選和不選
如果現在質量超過了返回,如果剩下的砝碼質量加上當前的數量還不夠最優答案,返回
.
.
.
.
程序:
轉載于:https://www.cnblogs.com/YYC-0304/p/10458943.html
總結