#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 intervalCover(Interval intervals[], int n) {
qsort(intervals, n, sizeof(Interval), compare);
int count = 1;
int end = intervals[0].end;
printf("选择的区间为:[%d, %d]\n", intervals[0].start, intervals[0].end);
for (int i = 1; i < n; i++) {
if (intervals[i].start >= end) {
count++;
end = intervals[i].end;
printf("选择的区间为:[%d, %d]\n", intervals[i].start, intervals[i].end);
}
}
printf("最少需要选择 %d 个区间\n", count);
}
int main() {
Interval intervals[] = { { 1, 3 }, { 2, 4 }, { 3, 6 }, { 4, 7 }, { 6, 9 } };
int n = sizeof(intervals) / sizeof(intervals[0]);
intervalCover(intervals, n);
return 0;
}