#include <stdio.h>
#include <stdlib.h>
struct Interval {
int start;
int end;
};
int compare(const void *a, const void *b) {
return ((struct Interval *)a)->end - ((struct Interval *)b)->end;
}
void intervalCover(struct Interval *intervals, int num_intervals) {
qsort(intervals, num_intervals, sizeof(struct Interval), compare);
struct Interval current_interval = intervals[0];
printf("选取区间 [%d, %d]\n", current_interval.start, current_interval.end);
for (int i = 1; i < num_intervals; i++) {
if (intervals[i].start > current_interval.end) {
current_interval = intervals[i];
printf("选取区间 [%d, %d]\n", current_interval.start, current_interval.end);
}
}
}
int main() {
struct Interval intervals[] = {
{1, 3},
{2, 4},
{3, 6},
{5, 7},
{8, 10},
{9, 12}
};
int num_intervals = sizeof(intervals) / sizeof(intervals[0]);
printf("区间覆盖问题解决方案:\n");
intervalCover(intervals, num_intervals);
return 0;
}