最优装载贪心算法c语言实现
时间: 2023-12-02 08:42:05 浏览: 48
以下是最优装载贪心算法的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 1000
int w[MAX_N]; // 集装箱重量
int n; // 集装箱数量
int c; // 轮船载重量
// 比较函数,用于快速排序
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
// 贪心算法求解最优装载问题
int solve() {
int ans = 0; // 装载的集装箱数量
int sum = 0; // 当前已装载的集装箱重量
// 将集装箱按重量从小到大排序
qsort(w, n, sizeof(int), cmp);
// 从轻到重依次装载集装箱
for (int i = 0; i < n; i++) {
if (sum + w[i] <= c) { // 如果当前集装箱可以装载
ans++;
sum += w[i];
} else { // 如果当前集装箱无法装载
break;
}
}
return ans;
}
int main() {
// 读入数据
scanf("%d%d", &n, &c);
for (int i = 0; i < n; i++) {
scanf("%d", &w[i]);
}
// 求解并输出结果
printf("%d\n", solve());
return 0;
}
```