1、stdio.hstdlib.halgorithm#define N 50#define TURE 1#define FALSE 0int sN;/*开始时间*/int fN;/*结束时间*/int AN;/*用A存储所有的*/int Partition(int *b,int *a,int p,int r);void QuickSort(int *b,int *a,int p,int r);void GreedySelector(int n,int *s,int *f,int *A);int main()int n=0,i;while(n50)printf(n);请输入活动的个数,n=scanf
2、(%d,&n);if(n50) printf(请输入小于50的数!printf(n请分别输入开始时间si和结束时间fi:nnfor(i=1;i system(pause return 0;/快速排序void QuickSort(int *b,int *a,int p,int r) int q; if(pr)q=Partition(b,a,p,r); QuickSort(b,a,p,q-1);/*对左半段排序*/ QuickSort(b,a,q+1,r);/*对右半段排序*/产生中间数int Partition(int *b,int *a,int p,int r) int k,m,y,i=p,j
3、=r+1; int x=ap;y=bp; while(1)while(a+iif(i=j)break;else k=ai;ai=aj;aj=k;m=bi;bi=bj;bj=m;ap=aj;bp=bj;aj=x;bj=y;return j;void GreedySelector(int n,int *s,int *f,int *A) /用集合A来存储所选择的活动 A1=TURE; /默认从第一次活动开始执行 int j=1; /j记录最近一次加入到A中的活动 for(int i=2; /fj为当前集合A中所有活动的最大结束时间 /活动i的开始时间不早于最近加入到集合A中的j的时间fj if(si=fj) Ai=TURE; /当Ai=TURE时,活动i在集合A中 j=i; else Ai=FALSE; 四 、运行结果五 、实验小结贪心算法总是做出在当前看来最好的选择,也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。