zoukankan      html  css  js  c++  java
  • 贪心算法并不贪婪(五)

    一、贪心算法的思想

      贪心算法也称贪婪算法,此算法思想不从整体最优上考虑问题,仅是在某种意义上的局部最优求解。由此可见贪心算法只是追求某范围内的最优,可以将其称之为“温柔的贪婪”。

      贪心算法存在的问题:

      (1)不能保证最后的解是最优的;(2)不能用来求最大或最小解的问题;(3)只能求满足某些约束条件的可行解的范围;

      贪心算法的基本思路如下所示:

      (1)建立数学模型来描述问题;(2)对每一个子问题分成若干子问题;(3)对每一个子问题求解,得到子问题的局部是最优解;(4)把子问题的局部最优解合并成原来问题的一个解。

      实现该算法的基本过程如下所示:

      (1)从问题的某一初始解触发;(2)while能向给定总目标前进一步;(3)求出可行解的一个解元素;(4)由所有解元素组合成问题的一个可行解。

    二、实例演练

      “”找零钱”方案问题

      算法思想:人民币有100、50、10、5、2、1、0.5、0.2、0.1等多种面额(单位为元)。在找零钱时有多种方案,例如零钱68.9元,至少有以下3种方案:

      (1)1张20、4张10、1张5、3张1、1张0.5、4张0.1;(2)2张20、2张10、1张5、3张1、1张0.5、4张0.1;(3)6张10、1张5、3张1、1张0.5、4张0.1。

      代码实现:

    #include "stdio.h"
    #define MAXN 9
    int parvalue[MAXN] = { 10000, 5000, 2000, 1000, 500, 100, 50, 10 };
    int num[MAXN] = { 0 };
    int exchange(int n);
    int main()
    {
        int i;
        float m;
        printf("输入需要找零金额:");
        scanf("%f", &m);
        exchange((int)100 * m);
        printf("
    %.2f元零钱的组成:
    ", m);
        for (i = 0; i < MAXN;i++)
        {
            if (num[i]>0)
            {
                printf("%6.2f:%d张
    ", (float)parvalue[i] / 100.0, num[i]);
            }
        }
        system("pause");
        return 0;
    }
    int exchange(int n)
    {
        int i, j;
        for (i = 0; i < MAXN;i++)
        {
            if (n>parvalue[i])
            {
                break;//找到比n小的最大面额
            }
        }
        while (n>0&&i<MAXN)
        {
            if (n>=parvalue[i])
            {
                n -= parvalue[i];
                num[i]++;
            }
            else if (n < 10&&n>=5)
            {
                num[MAXN - 1]++;
                break;
            }
            else
            {
                i++;
            }
        }
        return 0;
    }

      实现结果:

  • 相关阅读:
    Window 服务安装
    SQL
    vb To c# or c# To vb
    CacheHelper-缓存
    让Linq的OrderBy支持动态字段
    哪些列上适合建立索引???
    如何查看Oracle数据库中无效的对象,约束,触发器和索引
    如何查看Oracle中被锁定的表
    ORACLE ASM
    WebLogic Server
  • 原文地址:https://www.cnblogs.com/hxf175336/p/9852367.html
Copyright © 2011-2022 走看看