貪心演算法——最優裝載問題
阿新 • • 發佈:2019-02-01
有一批集裝箱要裝上一艘載重量為c的輪船。其中集裝箱i的重量為wi。最優裝載問題要求在裝載體積不受限制的情況下,將盡可能多的集裝箱裝上輪船。
貪心策略:
重量最輕者優先裝載。
程式碼:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int c; //輪船的載重量 cin>>c; int n; //集裝箱個數 cin>>n; vector <int> v(n); for(int i=0;i<n;i++) cin>>v[i]; sort(v.begin(),v.end()); int all=0; //最多能裝的集裝箱個數 int cp=c; //當前剩餘載重量 for(int i=0;i<n;i++) { if(cp<=c&&v[i]<=cp) { all++; cp-=v[i]; } if(cp<v[i]) break; } cout<<"最多可裝入的個數:"<<all<<endl; cout<<"最終承載量:"<<c-cp<<endl; return 0; }