#include <stdio.h>
#include <stdlib.h>
typedef struct {
int start;
int end;
} Interval;
int compare(const void *a, const void *b) {
return ((Interval *)a)->end - ((Interval *)b)->end;
}
void minCoverIntervals(Interval intervals[], int num_intervals) {
qsort(intervals, num_intervals, sizeof(Interval), compare);
printf("选择的最小覆盖区间集合:\n");
int i = 0;
while (i < num_intervals) {
printf("[%d, %d] ", intervals[i].start, intervals[i].end);
int currentEnd = intervals[i].end;
i++;
while (i < num_intervals && intervals[i].start <= currentEnd) {
i++;
}
}
printf("\n");
}
int main() {
Interval intervals[] = {{3, 3}, {1, 4}, {2, 5}, {3, 6}};
int num_intervals = sizeof(intervals) / sizeof(intervals[0]);
minCoverIntervals(intervals, num_intervals);
return 0;
}