贪心算法实现活动安排 C语言
时间: 2023-12-04 20:40:07 浏览: 145
贪心算法 c语言
以下是使用贪心算法实现活动安排的C语言代码示例:
```c
#include <stdio.h>
// 定义活动结构体
struct Activity {
int start; // 开始时间
int end; // 结束时间
};
// 比较函数,用于排序
int cmp(const void *a, const void *b) {
return ((struct Activity *)a)->end - ((struct Activity *)b)->end;
}
// 贪心算法实现活动安排
void activitySelection(struct Activity activities[], int n) {
// 按照结束时间递增排序
qsort(activities, n, sizeof(struct Activity), cmp);
// 选取第一个活动
int i = 0;
printf("(%d, %d) ", activities[i].start, activities[i].end);
// 选取其余活动
for (int j = 1; j < n; j++) {
if (activities[j].start >= activities[i].end) {
printf("(%d, %d) ", activities[j].start, activities[j].end);
i = j;
}
}
}
int main() {
// 定义活动数组
struct Activity activities[] = {{1, 4}, {3, 5}, {0, 6}, {5, 7}, {3, 8}, {5, 9},
{6, 10}, {8, 11}, {8, 12}, {2, 13}, {12, 14}};
// 计算活动数量
int n = sizeof(activities) / sizeof(activities[0]);
// 输出最大兼容活动集合
printf("最大兼容活动集合为:");
activitySelection(activities, n);
return 0;
}
```
阅读全文