区间调度问题
有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\n",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; }