/*
* 第七章 贪心法
* 活动安排
* */
#include <iostream>
using namespace std;
void GreedySelect(int n, int s[], int f[], bool ch[]) {
int i, j;
ch[1] = true;
j = 1;
for (i = 2; i <= n; ++i) {
if (s[i] >= f[j]) {
ch[i] = true;
j = i;
} else
ch[i] = false;
}
}
int main() {
int n = 11;// 活动数
int s[] = {0, 1, 3, 0, 5, 3, 5, 6, 8, 8, 2, 12};// 活动开始时间集合
int f[] = {0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};// 活动结束时间集合
bool ch[11];
/*输出各活动时间区间*/
cout << "->各活动时间区间:" << endl;
for (int i = 1; i <= n; ++i) {
cout << i << ": " << s[i] << "~" << f[i] << endl;
}
GreedySelect(n, s, f, ch);
/*输出活动安排*/
cout << "++++++++++++++++++++++" << endl
<< "->活动安排:" << endl;
for (int j = 1; j <= n; ++j) {
if (ch[j])
cout << j << ": " << s[j] << "~" << f[j] << endl;
}
}
[算法]贪心法解决活动安排问题
最新推荐文章于 2025-10-06 14:14:25 发布
本文介绍了一种基于贪心算法的活动安排方法,通过选择最早结束的活动来最大化活动数量。代码示例展示了如何使用C++实现这一算法,包括活动时间区间的输出和最终的活动安排。
2938

被折叠的 条评论
为什么被折叠?



