使用C语言解决问题:有一群孩子和一堆饼干。每个孩子有一个饥饿度,每个饼干都有一个大小,每个孩子最多只能吃一个饼干,且只有饼干的大小大于小孩的饥饿度时,这个孩子才能吃饱,求解最多有多少孩子可以吃饱?
时间: 2024-01-20 08:04:00 浏览: 44
这是一个经典的贪心算法问题。我们可以先将孩子和饼干按照饥饿度和大小从小到大排序,然后从小到大依次匹配孩子和饼干。如果当前的饼干能够满足当前孩子的饥饿度,那么这个孩子就能够吃饱,否则继续匹配下一个饼干。最终匹配上的孩子数量就是最多能够吃饱的孩子数量。
以下是C语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define max(a, b) ((a) > (b) ? (a) : (b))
// 孩子结构体
typedef struct {
int hunger; // 饥饿度
} Child;
// 饼干结构体
typedef struct {
int size; // 大小
} Cookie;
// 比较函数,用于排序
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
// 求能够吃饱的最多孩子数量
int findContentChildren(Child *children, int childrenSize, Cookie *cookies, int cookiesSize) {
qsort(children, childrenSize, sizeof(Child), cmp); // 按照饥饿度从小到大排序
qsort(cookies, cookiesSize, sizeof(Cookie), cmp); // 按照大小从小到大排序
int i = 0, j = 0, count = 0;
while (i < childrenSize && j < cookiesSize) {
if (cookies[j].size >= children[i].hunger) { // 如果当前饼干能够满足当前孩子的饥饿度
count++; // 孩子吃饱了
i++; // 继续匹配下一个孩子
}
j++; // 继续匹配下一个饼干
}
return count;
}
int main() {
// 示例数据
Child children[] = {{1}, {2}, {3}};
Cookie cookies[] = {{1}, {1}};
int count = findContentChildren(children, sizeof(children) / sizeof(children[0]), cookies, sizeof(cookies) / sizeof(cookies[0]));
printf("%d", count);
return 0;
}
```
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)