题目名字
最优装箱(贪心)
题目链接
题意
有n个箱子分别为不同重量,给轮船的载重量,在n个箱子里选几个箱子加起来为最多载重,输出放了几个箱子以及箱子总重;
思路
- 先sort排序把箱子重量从小到大排序
- 定义sum是装上去的箱子的重量,从小到大依次加过去,当总重量小于等于限重的时候break
算法一:
代码
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,W;
cin>>n>>W;
int w[n+5];
for(int i=0;i<n;i++){
cin>>w[i];
}
sort(w,w+n);
int sum=0;//累计重量;
int ans=0;//箱子数量;
for(int i=0;i<n;i++){
if(sum+w[i]<=W){
ans++;
sum+=w[i];
}
else{
break;
}
}
cout<<ans<<' '<<sum;
return 0;
}