天天看點

最優裝載c語言貪心算法,最優裝載(貪心算法)

算法設計例題:最優裝載(貪心)

memory limit: 32768KB    time limit: 1000MS

accept: 24    submit: 68

Description

有一批集裝箱要裝上一艘載重量為C的輪船。其中集裝箱i的重量為wi。最優裝載問題要求确定在裝載體積不受限制的情況下,将盡可能多的集裝箱裝上輪船。

Input

輸入的第一個為測試樣例的個數T( T <= 100 ),接下來有T個測試樣例。每個測試樣例的第一行是一個整數n( n <= 1000 )和一個非負數C( C <= 10000 ),分别表示集裝箱的個數以及輪船的載重量。接下來有n行,每行一個非負數,表示每個集裝箱的重量。

Output

對應每個測試樣例輸出一行,格式為"Case #: D V",其中'#'表示第幾個測試樣例(從1開始計),D為輪船可以裝載的集裝箱數量的最大值,V為滿足D最大時輪船的實際載重量。

Sample Input

1

5 100

20

50

120

99

30

Sample Output

Case 1: 3 100

Author

Eapink

解決代碼:

#include #include using namespace std; int main() { int i,j,testNum,containerNum;//分别為測試個數、集裝箱個數 float weight[1000];//集裝箱重量 float load;//輪船載重量 cin>>testNum; for(i=0;i>containerNum>>load;        for(j=0;j>weight[j];   sort(weight,containerNum+weight);   //開始裝載   int count=0;   float sum=0.0;   for(int k=0;k=weight[k])   {   sum=sum+weight[k];   load=load-weight[k];   count++;   }   else   break;      }   cout<