用c语言写一个求解分饼干问题
时间: 2024-03-09 16:49:00 浏览: 111
好的,分饼干问题可以用贪心算法解决,下面是用C语言实现的代码:
```
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)b - *(int *)a); // 从大到小排序
}
int main() {
int n, m;
printf("请输入小朋友的数量和饼干数量:\n");
scanf("%d %d", &n, &m);
int children[n], i;
printf("请输入每个小朋友的胃口值:\n");
for (i = 0; i < n; i++) {
scanf("%d", &children[i]);
}
qsort(children, n, sizeof(int), compare); // 对小朋友的胃口值进行排序
int j = 0, count = 0;
for (i = 0; i < n && j < m; i++) {
if (children[i] <= m - j) { // 如果当前饼干数量能够满足当前小朋友的胃口值
j += children[i]; // 将饼干数量减去当前小朋友的胃口值
count++; // 记录发放的饼干数量
}
}
printf("最多可以满足 %d 个小朋友的胃口。\n", count);
return 0;
}
```
代码的思路是先将小朋友的胃口值从大到小排序,然后从胃口值最大的小朋友开始发放饼干,直到饼干数量不足或者所有小朋友的胃口都被满足。
阅读全文