编辑代码

#include <iostream>
#include <algorithm>
using namespace std;

struct Interval {
    int start, end;
};

bool compareIntervals(const Interval& a, const Interval& b) {
    return a.end < b.end;
}

int maxNonOverlappingIntervals(Interval intervals[], int n) {
    if (n <= 0) {
        return 0;
    }

    sort(intervals, intervals + n, compareIntervals);

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

    for (int i = 1; i < n; ++i) {
        if (intervals[i].start > end) {
            ++count;
            end = intervals[i].end;
        }
    }

    return count;
}

int main() {
    // 示例用法
    Interval intervals[] = {{6, 8}, {2, 4}, {3, 5}, {1, 5}, {5, 9}, {8, 10}};
    int n = sizeof(intervals) / sizeof(intervals[0]);

    int result = maxNonOverlappingIntervals(intervals, n);

    cout << "Maximum non-overlapping intervals: " << result << endl;

    return 0;
}