// 练习.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <iostream> #include <vector> using namespace std; /* 活动选择问题(算法导论第16章(贪心算法)) 作者:blackmamba 时间:2010年10月9日 */ //问题描述 int s[12] = {0, 1, 3, 0, 5, 3, 5, 6, 8, 8, 2, 11}; //活动的开始时间 int f[12] = {0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};//活动的结束时间(按升序排列) vector<int> vec;//存放解的向量 //递归求解 void recursive_activity_selection(int s[], int f[], int i, int n) { int m = i + 1; while (m <= n && s[m] < f[i]) { m = m + 1; } if (m <= n) { vec.push_back(m); recursive_activity_selection(s, f, m, n); } } //迭代版本 vector<int> res;//存放解的集合 void greedy_activity_selection(int s[], int f[], int n) { int i = 1; res.push_back(i);//选中即一个活动 for (int m=2; m<n; m++) { if (s[m] > f[i]) { res.push_back(m); i