Description
有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。对于给定的n个集装箱和轮船的载重量C,编程计算装入最多时的集装箱个数。
Input
输入由多组测试数据组成。
每组测试数据输入的第1行中有2个正整数n和C。正整数n是集装箱个数;正整数C是轮船的载重量。接下来的一行中有n个整数,分别表示n个集装箱的重量,它们之间用空格分隔。
Output
对应每组输入,输出最大载重量
Sample Input
5 10 7 2 6 5 4
Sample Output
10
解题思路:读入数据a[i],用一个min数组储存最小值,从n-1到1循环,把b[i]赋值为a[i]+b[i+1],如果a[i]那么就把min[i]赋值为a[i]若其他情况则把min[i]赋值为min[i+1]。然后搜索,如果s>ans就把ans赋值为s,如果ans=c就退出过程,如果dep<=n且s+min[dep]<=c且s+b]dep>ans就递归,如果s+a[dep]依然小于等于c,就继续递归,最后输出ans即可。
程序:
var
procedure dfs(dep,s:longint);
end;
begin
end.