C语言 实验7-1-13 装箱问题 (20分)
程序员文章站
2022-06-07 14:37:59
...
思路写到注释里啦,
#include<stdio.h>
#define N 1000
int main(void)
{
int n,i,j,goods[N],box[N]={0}; // goods为货物 , box为箱子(一开始箱子是空的,无货物,所以初值为 0)
scanf("%d", &n);
for (i=1; i<=n; i++) // 为了方便统计,因此货物和箱子都是从 1开始 ,到等于 n结束
scanf("%d", &goods[i]);
int max=0; // max表示序号最大的箱子
for (i=1; i<=n; i++){
for (j=1; j<=n; j++){
if (box[j]+goods[i] <= 100){ // 只要 货物 + 箱子里的货物 <= 100 ,就放入此箱子
box[j] += goods[i];
printf("%d %d\n", goods[i], j);
if (j > max) //若此时箱子序号 j 比 max值大,就赋值给 max
max = j;
break; // 装完一个货物就跳出,不要再跟箱子循环了
}
}
}
printf("%d\n", max);
return 0;
}