一辆运送快递的货车。运送的快递均放在大小不等的长方形快递盒中
为了能够装载更多的快递 同时不能让货车超载
需要计算最多能装多少个快递
快递的体积不受限制
快递数量最多1000个
货车载重量50000
输入描述:
第一行输入 每个快递重量 用逗号分隔
如5,10,2,11
第二行 输入 货车的载重量
如20
不需要考虑异常输入
输出描述:
输出最多能装多少个快递
货车的载重量为20 最多只能放3种快递 5,10,2因此输出3
示例1:
输入
5,10,2,11
20
输出
3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAX_NUM 1000
#define MAX_WEIGHT 50000
int Cmp(const void *a, const void *b)
{
return (*(int *)a - *(int *)b);
}
void PrintList(int *list, int n)
{
int i;
for (i = 0; i < n; i++) {
printf("%d ", list[i]);
}
printf("\n");
}
int GetMaxThing(int *list, int n, int max)
{
int sum = 0, i, count = 0;
qsort(list, n, sizeof(int), Cmp);
PrintList(list, n);
for (i = 0; i < n; i++) {
sum += list[i];
if (sum > max) {
break;
}
count++;
}
printf("count=%d\n", count);
return count;
}
int main()
{
char s[1000] = {0};
int list[100] = {0};
int idx = 0, i;
gets(s);
int n;
scanf("%d", &n);
char *p = strtok(s, ",");
while (p != NULL) {
list[idx] = atoi(p);
p = strtok(NULL, ",");
idx++;
}
GetMaxThing(list, idx, n);
return 0;
}