最优装载 算法设计分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最优装载算法设计分析
有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。
编程任务:
对于给定的n个集装箱和轮船的载重量C,编程计算装入最多时的集装箱个数。
Input
输入由多组测试数据组成。
每组测试数据输入的第1行中有2个正整数n和C。正整数n是集装箱个数;正整数C是轮船的载重量。接下来的一行中有n个整数,分别表示n个集装箱的重量,它们之间用空格分隔。
Output
对应每组输入,输出的每行是计算出的装入最多时的集装箱个数。Sample Input
4 5
3 5 2 1
Sample Output
2
#include
#include
#include
using namespace std;
struct Node
{
int weight;
friend bool operator <(Node a,Node b) {
return a.weight > b.weight;
}
};
int main()
{
int n,c,num,sum;
Node p;
while(cin>>n>>c)
{
priority_queue
while(n--)
{
scanf("%d",&p.weight); Q.push(p);
}
num = sum = 0;
while(!Q.empty())
{
p = Q.top();
Q.pop();
sum += p.weight;
num ++;
if(sum > c)
{
num --;
break;
}
}
cout< return 0; }