Problem Description
在一批共n个集装箱要装上艘载重量为c的轮船,其中集装箱i的重量为wi。找出一种最优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。
Input
输入有多组数据,每组数据的第一行有两个正整数n和c。n是集装箱数,c是轮船的载重量。接下来的1行中有n个正整数,表示集装箱的重量。
Output
对于每组数据输出最大装载重量。
Sample Input
5 10 7 2 6 5 4
Sample Output
10
//关键字: 01背包
//标程:
#include<iostream> #include<cstring> using namespace std; int back_pack[10010]; int main() { // freopen("b.txt","r",stdin); int num,volume,i,j,wight; while(cin>>num>>volume) { memset(back_pack,0,sizeof(back_pack)); back_pack[0]=1; for(i=1;i<=num;i++) { cin>>wight; for(j=volume;j>=wight;j--) if(back_pack[j-wight]) back_pack[j]=1; } for(i=volume;i>0;i--) if(back_pack[i]) { printf("%d\n",i);break;} } return 0; }