最优装载问题|贪心
2026-04-04 12:00:12
发布于:河北
15阅读
0回复
0点赞
废话少说,上代码
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
// 取消cin与stdio的同步,提高输入输出效率
ios::sync_with_stdio(false);
// 解除cin与cout的绑定,进一步优化输入输出
cin.tie(nullptr);
cout.tie(nullptr);
// c: 海盗船容量, n: 古董数量, w[]: 古董重量数组, cnt: 装入古董的数量, sum: 当前总重量
int c=0,n=0,w[1001]={0},cnt=0,sum=0;
// 输入海盗船容量和古董数量
cin>>c>>n;
// 输入每个古董的重量
for(int i=0;i<n;++i)
cin>>w[i];
// 将古董按重量从小到大排序(贪心策略)
sort(w,w+n);
// 遍历排序后的古董,尽可能多地装入海盗船
for(int i=0;i<n;++i){
// 如果当前物品能装入海盗船(不超过容量限制)
if(sum+w[i]<=c){
sum+=w[i]; // 更新总重量
cnt++; // 增加装入古董数量
}else break; // 无法继续装入,结束循环
}
// 输出最多能装入的古董数量
cout<<cnt;
}
这里空空如也








有帮助,赞一个