本文最后更新于192 天前,其中的信息可能已经过时,如有错误请发送邮件到1729915388@qq.com
问题描述:某艘船的载重量为C,每件物品的重量为wi,要将尽量多的物品装入到船上。
#include<stdio.h>
#define N 100
void Insertion_Sort(int *a,int n){
int i = 0;
for(i = 0; i < n-1; i++)
{
int M = i;
int num = a[i + 1];
while(M >= 0)
{
if(num < a[M])
{
a[M + 1] = a[M];
M--;
}
else
{
break;
}
}
a[M + 1] = num;
}
}
int main()
{
int w[N];
int c,n;//c:载重量,n古董数
int sum = n;//装入古董的数量
int tmp = 0;//装入古董的重量
scanf("%d %d",&c,&n);
for(int i=0; i < n; i++)
scanf("%d",&w[i]);
Insertion_Sort(w,n);
for(int i = 0; i < n; ++i)
{
tmp += w[i];//这个要在if外面
if(tmp >= c)
{
if(tmp == c)//最后一个能装进去
sum = i+1;
else
sum = i;//最后一个不能装进去
break;
}
//其余的情况是tmp<c,此时sum肯定等于n
}
printf("%d",sum);
return 0;
}