最优装载问题: 问题描述:某艘船的载重量为C,每件物品的重量为wi,要将尽量多的物品装入到船上。请给出c++代码
时间: 2024-02-18 10:59:00 浏览: 160
C++最优装载问题
5星 · 资源好评率100%
以下是使用贪心算法解决最优装载问题的C++代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
const int MAXN = 1000;
int n, c, w[MAXN];
cin >> n >> c;
for (int i = 0; i < n; i++) {
cin >> w[i];
}
sort(w, w + n); // 将物品按重量从小到大排序
int sum = 0, cnt = 0;
for (int i = 0; i < n; i++) {
if (sum + w[i] <= c) { // 如果当前物品能装下
sum += w[i]; // 更新当前载重量
cnt++; // 更新已装载物品数量
} else {
break; // 否则退出循环
}
}
cout << cnt << endl; // 输出已装载物品数量
return 0;
}
```
该算法的时间复杂度为 $O(n \log n)$,其中 $n$ 为物品数量。
阅读全文