活动安排问题贪心算法c语言
时间: 2023-07-12 14:07:33 浏览: 110
活动安排问题是一个经典的贪心算法问题。该问题的做法是:
1. 将所有活动按照结束时间从早到晚排序
2. 选择第一个活动
3. 对于剩余的活动,如果其开始时间晚于已经选中的活动结束时间,则选择该活动,否则将其舍去
4. 重复步骤3,直到所有活动都被处理完毕
以下是用C语言实现活动安排问题的贪心算法代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct activity{
int start;
int end;
} Activity;
int cmp(const void *a, const void *b) {
return ((Activity*)a)->end - ((Activity*)b)->end;
}
void activitySelection(Activity arr[], int n) {
int i, j;
printf("Selected activities: ");
i = 0;
printf("%d ", i);
for (j = 1; j < n; j++) {
if (arr[j].start >= arr[i].end) {
printf("%d ", j);
i = j;
}
}
}
int main() {
Activity arr[] = {{1, 3}, {2, 5}, {5, 7}, {6, 8}, {8, 10}, {10, 12}};
int n = sizeof(arr)/sizeof(Activity);
qsort(arr, n, sizeof(Activity), cmp);
activitySelection(arr, n);
return 0;
}
```
该代码先定义了一个结构体Activity来存储每个活动的开始和结束时间。然后使用qsort函数将所有活动按照结束时间从早到晚排序。接着使用贪心算法选择每个时间段内结束时间最早的活动,直到所有活动都被处理完毕。
阅读全文