用c语言写一个贪心算法例子
时间: 2023-08-02 14:39:23 浏览: 90
贪心算法实例
4星 · 用户满意度95%
下面是一个使用贪心算法求解活动安排问题的C语言代码示例:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int start;
int end;
} Activity;
int cmp(const void *a, const void *b) {
Activity *act1 = (Activity*)a;
Activity *act2 = (Activity*)b;
return act1->end - act2->end;
}
void selectActivities(Activity activities[], int n) {
qsort(activities, n, sizeof(Activity), cmp);
int i = 0, j;
printf("Selected activities: %d ", i);
for (j = 1; j < n; j++) {
if (activities[j].start >= activities[i].end) {
printf("%d ", j);
i = j;
}
}
}
int main() {
Activity activities[] = {
{1, 2}, {3, 4}, {0, 6}, {5, 7}, {8, 9}, {5, 9}
};
int n = sizeof(activities) / sizeof(activities[0]);
selectActivities(activities, n);
return 0;
}
```
该代码演示了如何使用贪心算法解决活动安排问题。首先,将所有活动按照结束时间从小到大排序,然后从第一个活动开始,依次选择结束时间比上一个活动开始时间晚的活动,直到遍历完所有活动。在选择过程中,输出已选择的活动的下标。
阅读全文