贪心算法——最优装载问题

来源:互联网 发布:淘宝差评被卖家骚扰 编辑:程序博客网 时间:2024/06/14 09:20

  有一批集装箱要装上一艘载重量为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;}