编辑代码

#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;
}