#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 selectNonOverlappingIntervals(struct Interval intervals[], int n) {
qsort(intervals, n, sizeof(struct Interval), compare);
int result = 1;
int currentEnd = intervals[0].end;
printf("区间:\n");
printf("(%d, %d)\n", intervals[0].start, intervals[0].end);
for (int i = 1; i < n; i++) {
if (intervals[i].start > currentEnd) {
result++;
currentEnd = intervals[i].end;
printf("(%d, %d)\n", intervals[i].start, intervals[i].end);
}
}
printf("最大区间数: %d\n", result);
}
int main() {
struct Interval intervals[] = {
{6, 8},
{2, 4},
{3, 5},
{1, 5},
{5, 9},
{8, 10}
};
int n = sizeof(intervals) / sizeof(intervals[0]);
selectNonOverlappingIntervals(intervals, n);
return 0;
}