编辑代码

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int start;
    int end;
} Interval;

int cmp(const void* a, const void* b) {
    return ((Interval*)a)->end - ((Interval*)b)->end;
}

void intervalCover(Interval* intervals, int size) {
    qsort(intervals, size, sizeof(Interval), cmp);
    
    printf("选择的区间为:\n");
    int end = 0;
    for (int i = 0; i < size; i++) {
        if (intervals[i].start >= end) {
            printf("[%d, %d]\n", intervals[i].start, intervals[i].end);
            end = intervals[i].end;
        }
    }
}

int main() {
    Interval intervals[] = { {1, 3}, {2, 4}, {3, 6}, {5, 7}, {6, 8}, {8, 10} };
    int size = sizeof(intervals) / sizeof(intervals[0]);
    
    intervalCover(intervals, size);
    
    return 0;
}