最優裝載問題 貪心

2021-09-07 04:45:53 字數 964 閱讀 8763

問題描述:

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

程式設計任務: 對於給定的n個貨櫃和輪船的載重量c,程式設計計算裝入最多時的貨櫃個數。

輸入:

輸入由多組測試資料組成。每組測試資料輸入的第1行中有2個正整數n和c。正整數n是貨櫃個數;正整數c是輪船的載重量。接下來的一行中有n個整數,分別表示n個貨櫃的重量,它們之間用空格分隔。其中1<=n<=2000,所有正整數不超過231-1

輸出:

對應每組輸入,輸出的每行是計算出的裝入最多時的貨櫃個數。

#include#include#includeusing namespace std;

#define max 10000

struct loadload[max];

int cnt; //最後被裝的個數

bool cmp(const load& l1,const load& l2)

int main()

vectorx = vector(n,0); //最優解陣列 1裝 0不裝

sort(load,load+n,cmp);

int op = 0;

for(int i = 0; i < n && load[i].w <= c; i ++)

for(int i = 0; i < n; i ++)

} cout << "cnt = " << cnt << endl;

cout << "總重量為:" << op << endl;

return 0;

}

思想:體積不受限制  可以假想這艘船可以容納全部的貨櫃   但是重量有限制 

因此將每個貨櫃的重量與標號  封裝成結構體  公升序排序

貪心,最優裝載問題

問題描述 有一批貨櫃要裝上一艘載重量為c的輪船,其中貨櫃i的重量為wi。最優裝載問題要求確定在裝載體積不受限制的情況下,將盡可能多的貨櫃裝上輪船。分析 可用貪心演算法求解,採用重量最輕者先裝的貪心選擇策略,可產生最優裝載問題的最優解。具體演算法描述如下 public static float loa...

貪心 最優裝載問題

有一批貨櫃 要裝上一艘載重量為 c的輪船。其中貨櫃 i的重量為wi 最優裝載問題要求確定 在裝載體積不受限制的情況下,將盡可能多的貨櫃裝上輪船。最優裝載問題問題的形式描述 問題的形式描述是 給定c 0,wi 0,1 i n,求n 元0 1向量 x1,x2,xn 使得 輸入 貨櫃的數目n,船的載重量c...

最優裝載 貪心

最優裝載問題可用貪心演算法求解。採用重量最輕者先裝的貪心選擇策略,可產生最優裝載問題的最優解。template class type void loading int x type w type c,int n include h using namespace std const int max ...