首页 > 编程语言 > 详细

第四章-贪心算法

时间:2017-01-07 19:26:09      阅读:241      评论:0      收藏:0      [点我收藏+]

组合问题中的贪心法:

活动安排问题:

在一个会场中,安排一批活动,活动的时间可能重复,要求计算出最多能够安排的活动数。

算法分析:

先把活动按照时间从大到小的顺序,进行排序。然后就可以用贪心思想来进行选择。

代码:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

typedef struct node
{
    int start, end;
}node;

int n;
vector<node> v;

bool Compare(node n1, node n2)
{
    return n1.end < n2.end;
}

void Setup()
{
    cin >> n;
    node t;
    for (int i = 0; i < n; i++)
    {
        cin >> t.start >> t.end;
        v.push_back(t);
    }
    sort(v.begin(), v.end(), Compare);
}

int Select()
{
    int maxCount = 1;
    int currectAct = 0;
    for (int i = 1; i < n - 1; i++)        //直接从第二个开始
    {
        if (v[i].start >= v[currectAct].end)
        {
            maxCount++;
            currectAct = i;        //在当前基础上,继续找下一个
        }
    }
    return maxCount;
}

int main()
{
    Setup();
    cout << Select() << endl;
    return 0;
}

 

图问题中的贪心法:

第四章-贪心算法

原文:http://www.cnblogs.com/quanxi/p/5998261.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!