首页 > 其他分享 >头歌资源库(8)分发饼干

头歌资源库(8)分发饼干

时间:2024-06-18 21:29:56浏览次数:13  
标签:arr 饼干 int 孩子 ++ 胃口 头歌 资源库

一、 问题描述

二、算法思想  

       我们可以使用贪心算法来解决这个问题。首先,我们将孩子们的胃口值和饼干的尺寸进行排序,从小到大。然后,我们从最小的胃口值和最小的饼干尺寸开始匹配。

我们使用两个指针i和j,分别指向孩子们的胃口数组和饼干数组的起始位置。每次比较当前孩子的胃口值和饼干的尺寸,如果饼干尺寸能够满足孩子胃口,就将饼干分配给孩子,并将i和j指针往后移动一位。如果饼干不能满足孩子胃口,就将j指针往后移动一位,继续寻找下一个更大的饼干。

       循环结束后,我们返回已经分配了饼干的孩子数量。

 三、代码实现

#include <stdio.h>

// 定义一个快速排序函数
void quickSort(int arr[], int left, int right) {
    if (left < right) {
        int i = left, j = right;
        int pivot = arr[left]; // 选择最左边的元素作为枢轴

        while (i < j) {
            while (i < j && arr[j] >= pivot)
                j--;
            if (i < j)
                arr[i++] = arr[j];

            while (i < j && arr[i] <= pivot)
                i++;
            if (i < j)
                arr[j--] = arr[i];
        }

        arr[i] = pivot;
        quickSort(arr, left, i - 1);  // 递归排序左半部分
        quickSort(arr, i + 1, right); // 递归排序右半部分
    }
}

// 分配饼干给孩子的函数
int assignCookies(int children[], int childCount, int cookies[], int cookieCount) {
    // 先对孩子和饼干的胃口值和尺寸进行排序
    quickSort(children, 0, childCount - 1);
    quickSort(cookies, 0, cookieCount - 1);

    int childIndex = 0; // 记录孩子的索引
    int cookieIndex = 0; // 记录饼干的索引
    int satisfiedChildren = 0; // 记录满足的孩子数

    while (childIndex < childCount && cookieIndex < cookieCount) {
        if (cookies[cookieIndex] >= children[childIndex]) {
            // 如果当前饼干能够满足当前孩子的胃口
            satisfiedChildren++;
            childIndex++; // 给这个孩子分配了饼干,检查下一个孩子
        }
        cookieIndex++; // 不管是否满足孩子,都检查下一个饼干
    }

    return satisfiedChildren;
}

int main() {
    int m, n;
    scanf("%d %d", &m, &n);

    int g[m]; // 存储孩子的胃口值
    int s[n]; // 存储饼干的尺寸

    // 输入孩子们的胃口值
    for (int i = 0; i < m; i++) {
        scanf("%d", &g[i]);
    }

    // 输入每块饼干的尺寸
    for (int i = 0; i < n; i++) {
        scanf("%d", &s[i]);
    }

    // 调用函数计算最多能满足的孩子数
    int maxSatisfied = assignCookies(g, m, s, n);

    // 输出结果
    printf("%d", maxSatisfied);

    return 0;
}

执行结果   

 结语  

给时间时间

让过去过去

使开始开始

!!!

标签:arr,饼干,int,孩子,++,胃口,头歌,资源库
From: https://blog.csdn.net/m0_73399576/article/details/139752317

相关文章

  • C语言:头歌课程设计(未完结,慎入)
    第1关:【课程设计】Init任务描述你需要将一系列的学生期末考试信息进行存储(学生人数不会超过100)。每个学生的信息包括:姓名(由firstname和lastname两部分组成,例如JingyuLI,first_name="Jingyu"last_name="LI");学号(12位数字组成,开头4位为2022、2021、2020);C......
  • 头歌易-算式运算的合法性
    给定一个算式运算,算式由运算数、+、-、*、/、(、)组成,请编写程序判断该算式运算是否合法。如果合法,计算该算式的值。输入描述:第一行输入一个运算表达式输出描述:如果表达式合法则计算其值,结果保留两位小数,如果不合法则输出表达式不合法!输入样例:(5+3)*9输出样例:72.00sd......
  • 代码随想录算法训练营 day31 | 455.分发饼干 376.摆动序列 53.最大子数组和
    376.摆动序列说实话,没明白为啥算是贪心。最开始的思路是去重,然后统计正负变化次数。classSolution{public:intwiggleMaxLength(vector<int>&nums){if(nums.size()==1)return1;intans=0,last=-2,now;for(inti=1;i<nums.size();......
  • 头歌初识redis答案
    头歌初识Redis的答案可以从多个方面进行归纳和总结。以下是根据参考文章提供的信息,按照清晰、分点表示和归纳的方式给出的答案:一、Redis基础知识Redis有16个数据库,默认使用第0个数据库,可以用select命令进行切换。Redis是基于内存操作的,其性能瓶颈不是CPU,而是机器的内存和......
  • 代码随想录算法训练营第三十一天 | 455.分发饼干 376.摆动序列 53.最大子数组和
    455.分发饼干题目链接文章讲解视频讲解classSolution{public:intfindContentChildren(vector<int>&g,vector<int>&s){sort(g.begin(),g.end());sort(s.begin(),s.end());intindex=0;//从最小的饼干开始遍历f......
  • 头歌--交换类排序
    本关任务:编写函数通过比较数组相邻两个元素求数组最大值。#include<stdio.h>#include<stdlib.h>voidinput(int*&a,int&n);voidoutput(int*a,intn);voidcomp(int*a,intn);voidswap(int&a,int&b);intmain(){  inti,n;  int*a=NULL; ......
  • 头歌实践教学平台—C语言程序设计(指针)
    5-1学习-指针基本概念(一)通过指针变量间接访问变量#include<stdio.h>intmain(){intx,y;int*p;//定义指针变量Pp=&x;//使指针变量p指向一个变量x/*****请在以下填写通过p输入输出x值代码*****//**********Begin*********/scanf("%d",p......
  • 头歌springboot初体验
    您好!看起来您可能在询问关于SpringBoot的入门体验。SpringBoot是一个开源的Java框架,它设计用来简化Spring应用程序的初始搭建和开发过程。以下是一些SpringBoot的基本概念和入门步骤:SpringBoot简介:SpringBoot是Spring框架的一个模块,它提供了快速启动和运行Spring应......
  • 头歌数据库实验七:函数与触发器
    第1关:定义、调用参数函数usedemo;#代码开始#定义、调用参数函数(func_sqty):查询返回指定供应商的供应零件总数量。#DROPFUNCTIONfunc_sqty;#SETGLOBALlog_bin_trust_function_creators=TRUE;DELIMITER//CREATEFUNCTIONfunc_sqty(p_snoCHAR(2))RETUR......
  • 头歌数据库实验六:存储过程
    第1关:增加供应商相关列sqtyusedemo;#代码开始#在S表中增加一列供应零件总数量(sqty),默认值为0。ALTERTABLEsADDsqtyINTDEFAULT0;#代码结束descs;第2关:定义、调用简单存储过程usedemo;#代码开始#1、定义简单存储过程:计算所有供应商供应零件总数量并修......