分發餅干問題——用貪心算法解決

目錄

一:問題描述

二:解決思路

貪心策略(C語言)算法復習總結3——貪心算法-CSDN博客

?三:代碼實現

四:復雜度分析


一:問題描述

分發餅干問題是一個經典的可以使用貪心算法解決的問題,問題描述如下:

有一群孩子和一堆餅干,每個孩子都有一個胃口值?g[i](表示該孩子需要的餅干的最小尺寸才能滿足),每個餅干都有一個尺寸?s[j]。目標是盡可能讓更多的孩子得到滿足,即找到能滿足的孩子的最大數量。也就是說,要將餅干分配給孩子,當且僅當餅干的尺寸大于或等于孩子的胃口值時,這個孩子才能被滿足。(每個孩子最多一塊餅干)

二:解決思路

貪心策略(C語言)算法復習總結3——貪心算法-CSDN博客

貪心策略是優先滿足胃口值小的孩子。因為對于胃口值小的孩子,更容易找到合適尺寸的餅干來滿足他,這樣可以盡量讓更多的孩子得到滿足。具體步驟如下:

  1. 對孩子的胃口值數組?g?和餅干尺寸數組?s?分別進行排序(升序)。
  2. 用兩個指針分別遍歷孩子數組和餅干數組。
  3. 從胃口值最小的孩子開始,嘗試用最小尺寸的餅干去滿足他。如果當前餅干的尺寸大于或等于當前孩子的胃口值,那么這個孩子就被滿足,兩個指針都向后移動一位;如果當前餅干的尺寸小于當前孩子的胃口值,說明這個餅干不能滿足這個孩子,只能嘗試下一個更大尺寸的餅干,即只移動餅干數組的指針。
  4. 重復步驟 3,直到遍歷完所有孩子或者所有餅干。

?三:代碼實現

#include <stdio.h>
#include <stdlib.h>// 比較函數,用于 qsort 排序
int compare(const void *a, const void *b) {return (*(int *)a - *(int *)b);
}// 解決分發餅干問題的函數
int findContentChildren(int* g, int gSize, int* s, int sSize) {// 對孩子的胃口值數組和餅干尺寸數組進行排序qsort(g, gSize, sizeof(int), compare);qsort(s, sSize, sizeof(int), compare);int child_index = 0;int cookie_index = 0;// 遍歷孩子和餅干數組while (child_index < gSize && cookie_index < sSize) {if (s[cookie_index] >= g[child_index]) {// 當前餅干能滿足當前孩子,孩子和餅干指針都后移child_index++;cookie_index++;} else {// 當前餅干不能滿足當前孩子,只移動餅干指針cookie_index++;}}return child_index;
}int main() {int g[] = {1, 2, 3};int s[] = {1, 1};int gSize = sizeof(g) / sizeof(g[0]);int sSize = sizeof(s) / sizeof(s[0]);int result = findContentChildren(g, gSize, s, sSize);printf("能滿足的孩子數量是: %d\n", result);return 0;
}

四:復雜度分析

  • 時間復雜度:排序操作的時間復雜度為?(O(n log n + m log m)),其中?n?是孩子的數量,m?是餅干的數量。遍歷數組的時間復雜度為?(O(min(n, m)))。所以總的時間復雜度為?(O(n log n + m log m))
  • 空間復雜度qsort?函數通常需要?(O(log n + log m))?的額外空間,因此總的空間復雜度為?(O(log n + log m))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/78976.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/78976.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/78976.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python爬蟲】簡單案例介紹4

本文繼續接著我的上一篇博客【Python爬蟲】簡單案例介紹3-CSDN博客 目錄 3.4 完整代碼 3.4 完整代碼 此小節給出上述案例的完整代碼&#xff0c; # encodingutf-8 import re, json, requests, xlwt, csv import pandas as pd from lxml import etree from bs4 import Beauti…

使用ADB工具分析Android應用崩潰原因:以閃動校園為例

使用adb工具分析模擬器或手機里app出錯原因以閃動校園為例 使用ADB工具分析Android應用崩潰原因&#xff1a;以閃動校園為例 前言 應用崩潰是移動開發中常見的問題&#xff0c;尤其在復雜的Android生態系統中&#xff0c;找出崩潰原因可能十分棘手。本文將以流行的校園應用&q…

【藍橋云課】男女搭配 python

題目 題目 題解 import mathT int(input()) for _ in range(T):N, M, K map(int, input().split())people_num N M# 目前為止可以組成的隊數group_num min(N // 2, M)if people_num - group_num * 3 < K:group_num-math.ceil((K-(people_num - group_num * 3))/3)pr…

edge 更新到135后,Clash 打開后,正常網頁也會自動跳轉

發現了一個有意思的問題&#xff1a;edge 更新135后&#xff0c;以前正常使用的clash出現了打開deepseek也會自動跳轉&#xff1a; Search Resultshttps://zurefy.com/zu1.php#gsc.tab0&gsc.qdeepseek &#xff0c;也就是不需要梯子的網站打不開了&#xff0c;需要的一直正…

MCP協議實戰指南:在VS Code中實現PostgreSQL到Excel的自動化遷移

作者&#xff1a;后端小肥腸 &#x1f34a; 有疑問可私信或評論區聯系我。 &#x1f951; 創作不易未經允許嚴禁轉載。 姊妹篇&#xff1a; 從PDF到精準答案&#xff1a;Coze助力RAGFlow框架提升數據召回率_提升ragflow-CSDN博客 CozeTreeMind實測&#xff1a;秒出ISO標準流程圖…

大模型微調(PEFT)

大模型微調&#xff08;PEFT&#xff09; PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;一、PEFT 核心方法1. LoRA&#xff08;Low-Rank Adaptation&#xff09;2. Adapter3. Prefix Tuning4. Prompt Tuning5. QLoRA&#xff08;Quantized LoRA&#xff09; 二…

flutter 打包mac程序 dmg教程

? 前提條件 ? 你已經在 macOS 上安裝了 Android Studio Flutter SDK。 ? Flutter 支持 macOS 構建。 運行下面命令確認是否支持&#xff1a; Plain Text bash 復制編輯 flutter doctor ---## &#x1f9f1; 第一步&#xff1a;啟用 macOS 支持如果是新項目&#xff0c;…

鴻蒙開發-動畫

1. 動畫-動畫特效 // 定義接口 (每個列表項的數據結構) interface ImageCount {url: stringcount: number }// 需求1: 遮罩層顯隱 透明度opacity 0-1 層級zIndex -1~99 // 需求2: 圖片縮放 縮放scale 0-1Entry Component struct Index {// 基于接口, 準備數據State images…

js:循環查詢數組對象中的某一項的值是否為空

循環檢查 selinfo 數組中的每一個對象&#xff0c;判斷其中的 po_qty 和 price 是否為空&#xff08;null、undefined 或空字符串 ""&#xff09;&#xff0c;可以使用以下幾種方法&#xff1a; 方法1&#xff1a;使用 forEach 循環檢查每一項 const selinfo this.…

x-cmd install | jellex - 用 Python 語法在終端里玩轉 JSON 數據!

目錄 核心功能與特點安裝優勢亮點適用場景 還在為命令行下處理 JSON 數據煩惱嗎&#xff1f;jellex 來了&#xff01;它是一款基于終端的交互式 JSON 和 JSON Lines 數據處理工具&#xff0c;讓你用熟悉的 Python 語法&#xff0c;輕松過濾、轉換和探索 JSON 數據。 核心功能與…

4月份到9月份看6本書第二天【ERP與企業管理】

ERP與企業管理 1-11章全面介紹了ERP的基本原理、物料管理功能、計劃功能、生產和采購管理功能、效益以及實施和應用ERP為企業帶來的深層次的變化。 第12章討論了軟件系統的選型。 第13章介紹了ERP實施和運行管理的方法 第14章介紹了國際上廣泛使用的ERP實施應用的評估方法。…

Opencv計算機視覺編程攻略-第十三節 跟蹤視頻中的物品

這是opencv系列的最后一節&#xff0c;主要學習視頻序列&#xff0c;上一節介紹了讀取、處理和存儲視頻的工具&#xff0c;本文將介紹幾種跟蹤圖像序列中運動物體的算法。可見運動或表觀運動&#xff0c;是物體以不同的速度在不同的方向上移動&#xff0c;或者是因為相機在移動…

001 藍橋杯嵌入式賽道備賽——基礎

個人筆記&#xff0c;不扭扭捏捏&#xff0c;一口氣到位。方便自己也方便大家 00 時鐘線 cubeMX已經完成了大多數工作 01 LED&#xff08;GPIO輸出&#xff09; 在使用LED的時候先把SN74HC573鎖存器PD2置高電平&#xff0c;然后寫入LED所要的高低電平&#xff0c;然后置PD2低…

案例-索引對于并發Insert性能優化測試

前言 最近因業務并發量上升,開發反饋對訂單表Insert性能降低。應開發要求對涉及Insert的表進行分析并提供優化方案。 ??一般對Insert 影響基本都在索引,涉及表已按創建日期做了分區表,索引全部為普通索引未做分區索引。 優化建議: 1、將UNIQUE改為HASH(64) GLOBAL IND…

【技術文章的標準結構與內容指南】

技術文章的標準結構與內容指南 技術文章是傳遞專業知識、分享實踐經驗的重要媒介。一篇高質量的技術文章不僅能夠幫助讀者解決問題&#xff0c;還能促進技術交流與創新。以下是技術文章通常包含的核心內容與結構指南。 1. 標題 一個好的技術文章標題應當&#xff1a; 簡潔明…

豪越消防一體化安全管控平臺:構建消防“一張圖”新生態

在城市化進程加速、建筑規模與功能日益復雜的當下&#xff0c;消防救援工作面臨著諸多嚴峻挑戰。火災隱患如同隱藏在暗處的“定時炸彈”&#xff0c;廣泛分布于城市的各個角落&#xff0c;想要快速、精準定位絕非易事。信息傳遞的不順暢更是雪上加霜&#xff0c;導致救援效率大…

重學Redis:Redis常用數據類型+存儲結構(源碼篇)

一、SDS 1&#xff0c;SDS源碼解讀 sds (Simple Dynamic String)&#xff0c;Simple的意思是簡單&#xff0c;Dynamic即動態&#xff0c;意味著其具有動態增加空間的能力&#xff0c;擴容不需要使用者關心。String是字符串的意思。說白了就是用C語言自己封裝了一個字符串類型&a…

抖音IP屬地可以隨便選擇地址嗎?深度解析

在當今社交媒體盛行的時代&#xff0c;抖音作為受歡迎的短視頻平臺之一&#xff0c;其IP屬地顯示功能引發了廣泛關注。許多用戶好奇&#xff1a;抖音的IP屬地是否可以隨意更改&#xff1f;是否存在方法可以“偽裝”自己的位置&#xff1f;?本文將深入探討這一話題。 一、抖音I…

SOLID原則詳解:提升軟件設計質量的關鍵

前言 關于設計原則SOLID具體指的是什么&#xff0c;怎么理解這些設計原則&#xff0c;我覺得有必要記錄一筆&#xff0c;畢竟這個設計原則確實經常在關鍵技術文檔中提及&#xff0c;在編程思想中提及&#xff0c;在日常的開發中使用&#xff0c;但是對我來說&#xff0c;似乎知…

如何使用 ONLYOFFICE 恢復之前的文件版本?

如何使用 ONLYOFFICE 恢復之前的文件版本&#xff1f; https://www.onlyoffice.com/blog/zh-hans/2023/04/how-to-use-version-history