#include<stdio.h>
struct course{
float start;
float end;
int w;
}Course[9];
void init_course_information(){
Course[1].start=8;Course[1].end=9.30;
Course[2].start =8.30;Course[2].end =10;
Course[3].start =9.30;Course[3].end =12;
Course[4].start =10.00;Course[4].end =11.00;
Course[5].start =11.30;Course[5].end =12.30;
}
int max(int a,int b){
return a>b?a:b;
}
int pre(int n){
float current_start;
int result=0,i;
current_start=Course[n].start;
for(i=0;i<5;i++){
if(Course[i].end>current_start){
result=i-1;
break;
}
}
return result;
}
int Scheduling_DP(int n){
int m=0;
if(n<0)
return 0;
else if(n==0){
return Course[0].w;
}
else{
m=max( (Scheduling_DP(pre(n))+Course[n].w ), Scheduling_DP(n-1) );
return m;
}
}
void main(){
int i,result;
int n=9;
init_course_information();
printf(" 开始时间 结束时间 \n");
for(i=0;i<9;i++)
printf("课程%d:%6.2f%8.2f%9d\n", i, Course[i]. start,Course[i]);
result=Scheduling_DP(n-1);
}