#include<stdio.h> /* * s[]:活动的开始时间 * f[]:活动的结束时间(非降序排列) * a[]:0或者1,为0表示活动不被安排,1表示活动被安排 * k:活动个数 */ void greedy(int s[],int f[],int a[],int k) { int i; int j = 0; for(i=0;i<k;i++) { a[i] = 0;//初始所有活动都未被安排 } a[0] = 1; printf("第1个活动被安排 "); int count = 1; for(i=1;i<k;i++) { if(s[i] > f[j]) { a[i] = 1; printf("开始时刻%d,结束时刻%d.",s[i],f[i]); j = i; count++; printf("第%d个活动被安排 ",i+1); } } printf("总计%d个活动被安排 ",count); } void greedy(int s[],int f[],int a[],int k); int main() { int s[10]; int f[10] ; int n = 10; printf("活动开始时刻:"); for(int i=0;i<n;i++) scanf("%d",&s[i]); printf("活动结束时刻:"); for(int i=0;i<n;i++) scanf("%d",&f[i]); int k; k = sizeof(f)/sizeof(f[0]); int *a; a = (int*)malloc(sizeof(int)*k); greedy(s,f,a,k); system("PAUSE"); }