#include <iostream>
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define Maxn 20 //最大问题规模
//问题描述
/*有5个物品,重量分别如数组里所示,要求选择装入货轮使得所装载的数量最多最多且不超过最大限重,
* 本题采用贪心法求解,每次都选择最小的*/
int W = 10;
int n = 5;
int w[] = {5,2,6,4,3};
int sumw = 0;
int ans = 0;
int op[Maxn];
void Knap()
{
//先从小到大排序
sort(w,w+n);
for(int i = 0;i < n;i++)
{
if(sumw + w[i] <= W)
{
sumw+=w[i];
op[i] = 1;
ans++;
}
else
op[i] = 0;
}
}
int main() {
Knap();
printf("选择的物品为:");
for(int i = 0;i < n;i++)
{
if(op[i] == 1)
printf("%d ",w[i]);
}
printf("\n");
printf("最大装载数量为:%d",ans);
return 0;
}
贪心法求装载问题
最新推荐文章于 2022-10-21 23:13:58 发布