编辑代码

#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){//求课程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);
}