贪心算法——C++实现中级案例

128 篇文章 ¥59.90 ¥99.00
本文介绍了贪心算法在解决实际问题中的应用,如分糖果问题、任务调度器问题和分割数组为连续子序列问题,并提供了C++代码实现。贪心算法通过每次选择局部最优解逐步达到全局最优,是优化问题的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贪心算法——C++实现中级案例

贪心算法是一种常用的优化算法,通常用于解决最优化问题。在贪心算法中,我们每次都选择当前状态下最优决策,然后更新状态,直到达到最终状态。本文将介绍几个经典的贪心算法案例,并给出C++代码实现。

  1. 分糖果问题

有m个孩子和n个糖果,每个孩子有对应的贪婪值g_i和每个糖果有对应的大小s_i。要求将糖果分配给孩子,使得满足以下条件:

  • 每个孩子只能分配一个糖果;
  • 每个孩子i只能分配大小不小于他的贪婪值g_i的糖果。

求最多能满足多少个孩子。

C++代码如下:

int findContentChildren(vector<int>& g, vector<int>& s) {
    sort(g.begin(), g.end());
    sort(s.begin(), s.end());
    int i = 0, j = 0; // i表示孩子编号,j表示糖果编号
    while (i < g.size() && j < s.size()) {
        if (g[i] <= s[j]) { // 能够满足孩子则继续寻找下一个孩子和糖果
            i++;
            j++;
        } else { // 不能满足孩子,则尝试用更大的糖果来满足当前孩子
            j++;
        }
    }
    return i;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值