問題描述:
有一批貨櫃要裝上一艘載重量為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 ...