c++贪心算法实现会场安排问题
时间: 2023-08-24 08:06:02 浏览: 96
会场安排问题是一个经典的贪心算法问题,可以用来求解多个活动在同一时间段使用同一个会场的最少会场数。以下是使用C++实现会场安排问题的贪心算法代码:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Meeting {
int start_time;
int end_time;
};
bool cmp(Meeting a, Meeting b) {
return a.end_time < b.end_time;
}
int main() {
int n;
cin >> n;
vector<Meeting> meetings(n);
for (int i = 0; i < n; i++) {
cin >> meetings[i].start_time >> meetings[i].end_time;
}
sort(meetings.begin(), meetings.end(), cmp);
int end_time = 0, count = 0;
for (int i = 0; i < n; i++) {
if (meetings[i].start_time >= end_time) {
end_time = meetings[i].end_time;
count++;
}
}
cout << count << endl;
return 0;
}
```
首先,定义了一个结构体Meeting,表示每个活动的开始时间和结束时间。然后,定义了一个比较函数cmp,用于按照结束时间升序排序。接着,读入输入数据,排序后遍历每个活动,若当前活动的开始时间大于等于上一个活动的结束时间,则可以使用同一个会场,否则需要使用新的会场。最后输出使用的最少会场数。
该算法的时间复杂度为O(nlogn),其中n为活动数。
阅读全文