编辑代码

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

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

int compare(const void *a, const void *b) {
    Interval *interval1 = (Interval *)a;
    Interval *interval2 = (Interval *)b;
    return interval1->end - interval2->end;
}

void intervalScheduling(Interval intervals[], int n) {
    qsort(intervals, n, sizeof(Interval), compare);

    int count = 1;
    int current_end = intervals[0].end;

    printf("Selected intervals: (%d, %d) ", intervals[0].start, intervals[0].end);

    for (int i = 1; i < n; i++) {
        if (intervals[i].start >= current_end) {
            printf("(%d, %d) ", intervals[i].start, intervals[i].end);
            current_end = intervals[i].end;
            count++;
        }
    }

    printf("\n最多互不覆盖区间: %d\n", count);
}

int main() {
    int n;

    printf("输入区间个数: ");
    scanf("%d", &n);

    Interval intervals[n];

    printf("输入每个区间的起始与终止值:\n");
    for (int i = 0; i < n; i++)
        scanf("%d %d", &intervals[i].start, &intervals[i].end);

    intervalScheduling(intervals, n);

    return 0;
}