基础篇2——贪心法

贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。

经典例题:

一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目不限的面值为2 5美分、1 0美分、5美分、及1美分的硬币。输入卖糖果的价钱,输出最少的找零个数。


分析:是找回个数越少越好即找回的面值尽可能大
#include 
#include
using namespace std;

struct pa                        //建立结构体,s,e分别为起止时间
{
    int s,e;
}a[1000];
int cmp(const pa&a,const pa&b)    //定义排序法   设pa中有a,b两组,按开始时间升序排序
{
    return a.s>n)
    {
        for(i=0;i>a[i].s>>a[i].e;
        }
        sort(a,a+n,cmp);        //按定义的方法排序
        max=0;
        for(i=0;i=a[j-1].e) sum++;   //后一个开始时间在前一个之后,可看,sum++;
            }
            if(sum>max) max=sum;
        }
        cout<


你可能感兴趣的:(编程算法基础)