作者:加肥的猫miao_115 | 来源:互联网 | 2023-09-25 21:36
算法分析:会场安排问题
算法的设计和描述
- 初始化 。共有n个会议,数组B存放开始时间,数组E存放结束时间(按非减序排序);集合A存放问题的解,即所选择的会议集合,会议i如果在集合A中,当且仅当A[i]=true;
- 令A【1】=true 。
- 依次扫描每一个会议,如果会议i的开始时间不小于最后一个选人集合A中的会议的结束时间,即将会议i加入集合A中;否则,放弃会议i,继续检查下一个会议。
算法源代码
设会议i的起始时间bi和结束时间ei的数据类型为自定义结构体类型struct time;
void GreedySelector(int n,struct time B[],struct time E[],bool A[])
> {
> int i,j;
> A[1]=true;
> j=1,i=2;
> while(i<=n)
> {
> if(B[i]>=E[j]){A[i]=true;j=i;}
> else A[i]=false;
> }
> }