您的位置:首页 > 编程语言 > Java开发

最优装载 时间限制(普通/Java):3000MS/10000MS 运行内存限制:65536KByte

2017-04-12 16:33 302 查看
描述


有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。



编程任务: 对于给定的n个集装箱和轮船的载重量C,编程计算装入最多时的集装箱个数。

输入

输入由多组测试数据组成。每组测试数据输入的第1行中有2个正整数n和C。正整数n是集装箱个数;正整数C是轮船的载重量。接下来的一行中有n个整数,分别表示n个集装箱的重量,它们之间用空格分隔。

输出

对应每组输入,输出的每行是计算出的装入最多时的集装箱个数。

样例输入
4 5
3 5 2 1

样例输出
2
思路 : 首先先从小到大排序,因为要装最多的集装箱,所以要从重量小的开始装。有贪心的意思了。#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int main()
{
int n,m,a[10000],i,j,sum,ans;
while(scanf("%d %d",&n,&m)!=EOF)
{
sum=0,ans=0;
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
for(i=0; i<n; i++)
{
if(sum+a[i]<=m)
{
sum=sum+a[i];
ans++;
}
else
break;
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++