区间调度问题

有N项工作,每项工作分别在Si时间开始,在Ti时间结束。对于每项工作,你都可以选择参加或者不参加,如果选择参加,那么自始至终必须全程参加。此外,参与工作的时间段不能重叠。目标是参与尽可能多的工作,那么最多能参与多少项工作?

/*
*程序已经按照最早结束工作时间在前,存入数组 
*/
#include<stdio.h>
int N;
int a[100],b[100];
void f(){
    int t=0,count=0;
    //按照最早工作在前,存入数组 
    for(int i=0;i<N;i++){
        //结束时间小于开始时间记录下一个工作的开始 
        if(t<a[i]){
            count++;
            //将t存入最早结束时间 
            t=b[i];
        }
    }
    printf("%d
",count);
}
int main(){
    while(scanf("%d",&N)==1){
        for(int i=0;i<N;i++){
            scanf("%d %d",&a[i],&b[i]);
        }
        f();
    }
    return 0;
}
原文地址:https://www.cnblogs.com/sky-z/p/4413692.html