算法分析:会场安排问题

算法分析:会场安排问题

算法的设计和描述

  1. 初始化 。共有n个会议,数组B存放开始时间,数组E存放结束时间(按非减序排序);集合A存放问题的解,即所选择的会议集合,会议i如果在集合A中,当且仅当A[i]=true;
  2. 令A【1】=true
  3. 依次扫描每一个会议,如果会议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;  //从会议i开始寻找与会议j相容的会议
> while(i<=n)
> {
     
> if(B[i]>=E[j]){
     A[i]=true;j=i;}
> else A[i]=false;
> }
> }

你可能感兴趣的:(笔记,算法,数据结构)