`

贪心取最大和

阅读更多
贪婪算法:
1、不追求最优解,故不穷举所有可能性,故效率高;
2、在某些情况,会成为最优解,如找钱时要求纸币数量最少。

求最小生成树的Prim算法和Kruskal算法都是漂亮的贪心算法。
马踏棋盘、背包装重的场景

#include <iostream>
#include <string>
using namespace std;


int greedy(int tag, int *p, int size);

int main(int argc, char *argv[])
{
  int weight[10] = {90,80,70,60,50,40,30,20,10,5};

  cout << greedy(225, weight, 10) << endl;

  return 0;
}

int greedy(int tag, int *p, int size)
{
//  假设数组P由降序排列
  int count = 0;
  for (int i = 0; i < size; i++)
  {
    if (tag >= p[i])
    {
      cout << i << ":" << p[i] << endl;
      count += p[i];
      tag -= p[i];
    }
  }
  return count;
}
分享到:
评论

相关推荐

    贪心算法

    在一系列数字中,两玩家轮流从两端取数,目标是使自己获取的数字总和最大化。贪心算法在此类问题中表现为总是选择当前最大值,但这并不总是最优策略,需结合具体规则判断。 3. **均分纸牌问题** 针对多堆纸牌的...

    大学贪心算法课件活动安排等问题

    然而,它的有效性取决于问题的特性,对于需要全局最优解且局部最优解不能保证全局最优的问题,贪心算法可能不是最佳选择。在实际应用中,需要根据问题的具体情况判断是否适合使用贪心算法,并结合其他方法(如动态...

    背包问题的贪心法C语言实现

    这个问题有多种变体,如0-1背包问题(每件物品只能取或不取)、完全背包问题(每件物品可以取无限次)和多重背包问题(每件物品有限定数量可取)。 【贪心法】是解决背包问题的一种策略,它在每一步选择当前最优的...

    算法分析与设计:贪心算法(自然数加法分解乘积最大+马拉松接力问题+整数删除后取最大值)(C++可执行源码+完整算法分析)

    题目1:设 n 为一自然数,n 可以分解成若干个不同的自然数的和,这样的分法有很多种,比如 n=10, 10 可以分解为:10=5+4+1; 10=5+3+2; 10+9+1; 10=8+2; 10=7+3; 10=6+4;10=7+2+1; 10=6+3+1;…。在所有这些分法中,各...

    贪心法几个小程序

    贪心法是计算机科学中的一种优化策略,它在每一步选择局部最优解,期望通过一系列局部最优解最终得到全局最优解。...这些小程序是学习和理解贪心算法的良好实践资源,同时也为算法设计和优化提供了一个有价值的起点。

    贪心算法的应用

    #### 五、贪心算法的实例分析——构建最大数字 ##### 问题描述 给定一系列正整数,要求将这些数字排列成一个最大的数字。 ##### 示例 - 输入:3, 13, 312, 343 - 输出:34331213 ##### 分析与解法 1. **贪心...

    0-1背包问题贪心算法(C++实现)

    - 然后,对于每一个物品 `i`,计算在包含和不包含该物品时的最大价值,并取其中较大者作为更新后的最大价值。 3. **主函数流程**: - 输入物品数量 `n` 和背包容量 `c`。 - 分别输入每个物品的价值和重量。 - ...

    贪心算法的经典问题

    综上所述,贪心算法在多种场景中都有广泛的应用,包括但不限于活动安排、背包问题、最优装载、单源最短路径、找零钱和多机调度等。通过合理地设计贪心策略,我们可以高效地解决这些问题,并得到较好的解决方案。

    埃及分数 贪心法——C语言代码r

    2. **分数拆分**:根据贪心策略,我们每次取尽可能大的单位分数,直到总和等于输入的分数。这里的关键是如何找到“尽可能大”的单位分数。可以设定一个循环,每次减去当前最大的未使用的单位分数,直到无法继续减...

    背包问题中的贪心算法

    然而,贪心算法并不能保证在所有情况下都能得到全局最优解,它的有效性取决于问题本身的特性。 - **贪心选择性质**:在每个阶段都做出在当前状态下看来最优的选择。 - **最优子结构性质**:问题的最优解包含着其子...

    贪心算法解0-1背包问题

    0-1背包问题是一个经典的组合优化问题,它的目标是在容量有限的背包中放入物品,使得背包中的物品总价值最大,但每个物品只能被取走或不取,不能分割。 0-1背包问题的定义如下:假设我们有一组物品,每件物品都有...

    会议安排(贪心算法和动态规划) 贪心算法和动态规划.pdf

    会议安排(贪心算法和动态规划) 会议安排问题是计算机科学中的一种经典问题,目的是在一系列活动中选择...会议安排问题可以使用贪心算法和动态规划两种方法来解决,每种方法都有其优缺,选择哪种方法取决于实际情况。

    背包问题 贪心算法

    ### 背包问题与贪心算法 #### 一、问题背景 背包问题是一类经典的组合优化问题,在计算机科学和运筹学中有着广泛的应用。这类问题通常涉及到资源分配、物品选择等场景,旨在通过最优策略来达到某种目标的最大化或...

    贪心算法解部分背包问题

    在提供的压缩包文件“背包问题”中,可能包含了示例代码或者练习题,用于帮助理解和实践贪心算法解决部分背包问题。通过分析和运行这些代码,你可以更深入地了解如何将贪心策略应用于实际问题中。 总的来说,贪心...

    贪心算法解决背包问题

    然而,每种排序方式都有其适用场景,选择哪种方式取决于具体的问题背景和需求。此外,本篇代码还为初学者提供了一个很好的学习起点,可以通过修改和扩展代码,探索更多关于背包问题的解决方案。

    顶点覆盖问题的贪心算法的设计与分析.doc

    贪心算法的思想是,每次选择度数最大的顶点 v,把它加入到 V1 中,并把 v 关联的边从 E 中删去,直到 E 为空为止。 贪心算法的性能分析表明,它的时间复杂度是关于 n 的多项式,对于某些 NP-困难问题确是有效的。...

    C#基于贪心算法下的01背包问题

    在这个问题中,每种物品都有一个重量和一个价值,且每种物品只能被取走0个或1个。贪心算法是一种解决问题的方法,它在每一步都采取局部最优解,期望最终能得到全局最优解。在C#编程语言中,我们可以利用贪心算法来...

    贪心算法导论 完整版

    - **适用范围有限**:并非所有问题都适用于贪心算法,其有效性取决于问题本身是否具备“贪心选择性质”和“最优子结构”两个特性。 - **可能不是全局最优**:贪心算法得到的结果不一定是全局最优解,尤其是在需要...

    贪心算法实例

    然而,贪心算法并不总是能得到全局最优解,它的适用性取决于问题是否具有贪心选择性质。在实际应用中,我们需结合问题的具体情况判断贪心算法是否适用,或者结合其他算法如动态规划来寻找更优解。

    贪心算法 背包问题

    背包问题通常描述为:给定一组物品,每件物品有自己的重量和价值,目标是在不超过背包最大承重限制的情况下,选择物品以最大化总价值。背包问题分为两种主要类型:**0-1背包问题**和**部分背包问题**。0-1背包问题中...

Global site tag (gtag.js) - Google Analytics