贪心算法解决活动安排问题c++简单程序
时间: 2023-11-20 21:54:28 浏览: 80
以下是一个简单的C++程序,使用贪心算法解决活动安排问题:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct Activity {
int start, end;
};
bool cmp(Activity a, Activity b) {
return a.end < b.end;
}
int main() {
int n;
cin >> n;
Activity a[n];
for (int i = 0; i < n; i++) {
cin >> a[i].start >> a[i].end;
}
sort(a, a + n, cmp);
int ans = 1, last = a[0].end;
for (int i = 1; i < n; i++) {
if (a[i].start >= last) {
ans++;
last = a[i].end;
}
}
cout << ans << endl;
return 0;
}
```
程序首先读入活动数量n和每个活动的起始时间和结束时间,然后按照结束时间从早到晚排序。接着,程序从第一个活动开始,依次判断每个活动是否与前面已选的活动相容,如果相容则将该活动加入最大相容活动子集合中,并更新最后一个活动的结束时间。最后输出最大相容活动子集合的大小即可。
阅读全文