贪心算法-题目1力扣455(简单题)

力扣455,给小朋友发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。

如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值

思路:先把胃口和饼干排一下序,从大到小看一下每块饼干是否能喂饱小朋友,如果不能喂饱,只能用最大的喂饱下一个小朋友了

代码流程:先int型qsort一下,用法需要记住,非双for嵌套代码编写流程

知识点:函数结构,int使用,以及头文件

#include<stdlib.h>
int findContentChildren(int* g, int gSize, int* s, int sSize) {
if(!(gSize*sSize)) return 0;
int cmp(const *a,const *b)
{
    return *a-*b;
}
qsort(g,gSize,sizeof(int),cmp);
qsort(s,sSize,sizeof(int),cmp);

int start=sSize-1;
int count=0;
for(int j=gSize-1;j>=0;j--)
{
    if((start>=0)&&(s[start]>=g[j]))//此处如果把(start>=0)放在后面,力扣编译错误,vscode编译成功,原因当start<0时,再进入if进行判断时s[start]已经发生越界
    {
        start--;
        count++;
    }
}
return count;

}
posted @ 2024-01-18 11:15  小小卡拉咪  阅读(37)  评论(0)    收藏  举报