编辑代码

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

typedef struct Interval {
    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;
}

// 贪心算法选择区间
void intervalScheduling(Interval intervals[], int size) {
    // 按结束时间对区间进行排序
    qsort(intervals, size, sizeof(Interval), compare);

    // 选择第一个区间
    int lastSelected = 0;
    printf("Selected Interval: [%d, %d]\n", intervals[lastSelected].start, intervals[lastSelected].end);

    for (int i = 1; i < size; i++) {
        if (intervals[i].start >= intervals[lastSelected].end) {
            printf("Selected Interval: [%d, %d]\n", intervals[i].start, intervals[i].end);
            lastSelected = i;
        }
    }
}

int main() {
    Interval intervals[] = {{1, 4}, {3, 5}, {0, 6}, {5, 7},
                            {3, 8}, {5, 9}, {6, 10}, {8, 11},
                            {8, 12}, {2, 13}, {12, 14}};
    int size = sizeof(intervals) / sizeof(intervals[0]);

    intervalScheduling(intervals, size);

    return 0;
}