目的:在载重量固定的条件下,装入最多的东西。
核心思想:把每件物品按照重量从小到大排序,依次装入容器,直到装不下为止。
#include <stdio.h>
void sort(int a[], int n);
int main()
{
int N = 10000;
int w[N];
int c , n;
printf("输入载重数量c和古董个数n:\n");
scanf("%d %d",&c,&n);
printf("输入每个古董的重量,用空格分开:\n");
for(int i = 0; i<n; ++i){
scanf("%d",&w[i]);
}
sort(w, n); //物品根据质量从小到大排序
int sum = 0;
int total = 0;
for(int i = 0; i < n; ++i){
sum += w[i];
if(sum <= c)
total++;
else
break;
}
printf("能装最大数量是:%d\n",total);
printf("分别是:\n"); //打印要装入的物品(对应的质量)
for(int i = 0; i < total; ++i){
printf("%d ",w[i]);
}
printf("\n");
return 0;
}
void sort(int a[], int n) //插入排序
{
int i , j , temp;
for(i = 1; i < n; ++i){
for(j = i; a[j]<a[j-1] && j>0; --j){
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}