组合问题中的贪心法:
活动安排问题:
在一个会场中,安排一批活动,活动的时间可能重复,要求计算出最多能够安排的活动数。
算法分析:
先把活动按照时间从大到小的顺序,进行排序。然后就可以用贪心思想来进行选择。
代码:
#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