#include <stdio.h>
#include <stdlib.h>
typedef struct {
int start;
int end;
} Interval;
int compare(const void* a, const void* b) {
Interval* intervalA = (Interval*)a;
Interval* intervalB = (Interval*)b;
return intervalA->end - intervalB->end;
}
int interval_covering(Interval intervals[], int n, Interval target) {
qsort(intervals, n, sizeof(Interval), compare);
int count = 0;
int current_end = target.start;
for (int i = 0; i < n; i++) {
if (intervals[i].start > target.end) {
break;
}
if (intervals[i].end < target.start) {
continue;
}
if (intervals[i].start <= current_end) {
count++;
current_end = intervals[i].end;
}
}
return count;
}
int main() {
Interval intervals[] = {{1, 3}, {2, 4}, {3, 6}, {5, 7}, {6, 8}};
int n = sizeof(intervals) / sizeof(intervals[0]);
Interval target = {2, 6};
int result = interval_covering(intervals, n, target);
printf("最小数字间隔: %d\n", result);
return 0;
}