76 lines
2.1 KiB
C
76 lines
2.1 KiB
C
/*----------------------------------------------------------------------
|
||
【程序设计】
|
||
------------------------------------------------------------------------
|
||
一名快递员有一个能承受最大重量为50公斤的送货箱。他需要依次接收若干个包裹,并将它们按顺序放入送货箱中进行配送。
|
||
每个包裹的重量各不相同。如果在接收某个包裹后,送货箱内的总重量超过了其最大承重能力,
|
||
则快递员需要先完成当前送货箱内所有包裹的配送,然后再开始接收新的包裹放入空的送货箱。
|
||
请计算快递员需要几次才能将所有包裹配送完毕。
|
||
(如果单个货物超过50公斤的(>50公斤),直接忽略不配送此货物)
|
||
|
||
示例1:
|
||
请输入包裹的数量:4
|
||
请依次输入每个包裹的重量(单位:公斤):
|
||
第 1 个包裹的重量: 8
|
||
第 2 个包裹的重量: 51
|
||
第 3 个包裹的重量: 6
|
||
第 4 个包裹的重量: 5
|
||
需要1次才能将所有包裹配送完毕。
|
||
|
||
示例2:
|
||
请输入包裹的数量:5
|
||
请依次输入每个包裹的重量(单位:公斤):
|
||
第 1 个包裹的重量: 8
|
||
第 2 个包裹的重量: 7
|
||
第 3 个包裹的重量: 50
|
||
第 4 个包裹的重量: 1
|
||
第 5 个包裹的重量: 2
|
||
需要3次才能将所有包裹配送完毕。
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
|
||
Program-End之间填入若干语句。
|
||
不要删除标志否则不得分。
|
||
不要修改或删除Program-End之外的内容否则不得分。
|
||
----------------------------------------------------------------------*/
|
||
#include <stdio.h>
|
||
|
||
// 函数用于计算所需的送货次数
|
||
int calculateDeliveryTimes(int weights[], int size) {
|
||
int currentWeight = 0;
|
||
int deliveryTimes = 1;
|
||
|
||
/**********Program**********/
|
||
int i;
|
||
for(i=0;i<size;i++){
|
||
if(weights[i] <= 50){
|
||
if(currentWeight + weights[i] > 50){
|
||
currentWeight=0;
|
||
deliveryTimes++;
|
||
}
|
||
currentWeight += weights[i];
|
||
}
|
||
}
|
||
/********** End **********/
|
||
return deliveryTimes;
|
||
}
|
||
|
||
int main() {
|
||
int size;
|
||
|
||
printf("请输入包裹的数量:");
|
||
scanf("%d", &size);
|
||
|
||
int weights[size];
|
||
|
||
printf("请依次输入每个包裹的重量(单位:公斤):\n");
|
||
for (int i = 0; i < size; ++i) {
|
||
printf("第 %d 个包裹的重量: ", i + 1);
|
||
scanf("%d", &weights[i]);
|
||
}
|
||
|
||
int times = calculateDeliveryTimes(weights, size);
|
||
|
||
printf("需要%d次才能将所有包裹配送完毕。\n", times);
|
||
|
||
return 0;
|
||
}
|