资源简介
设有n个会议的集合C={1,2,…,n},其中每个会议都要求使用同一个资源(如会议室),而在同一时间内只能有一个会议使用该资源。每个会议i都有要求使用该资源的起始时间bi和结束时间ei,且bi < ei 。如果选择了会议i使用会议室,则它在半开区间[bi, ei)内占用该资源。如果[bi, ei)与[bj , ej)不相交,则称会议i与会议j是相容的。会场安排问题要求在所给的会议集合中选出最大的相容活动子集,也即尽可能地选择更多的会议来使用资源。
代码片段和文件信息
#include
#include
using namespace std;
struct time
{
int a;
int b;
};
void GreedySelector(int nstruct time B[]bool X[])
{
X[0] = true;
int i=0j=1;
while(j {
if(B[i].b<=B[j].a)
{
X[j] = true;
i = j;
}
j++;
}
}
int main()
{
int n;
time *At;
bool *X;
cout << “请输入会议总数:“ << endl;
cin>>n;
A = (time*)malloc(n*sizeof(time));
X = (bool*)malloc(n*sizeof(bool));
for(int i=0;i X[i]=false;
}
cout << “请按顺序输入会议开始时间:“ << endl;
for(int i=0; i {
cin>>A[i].a;
}
cout << “请按顺序输入会议结束时间:“ << endl;
for(int i=0; i {
cin>>A[i].b;
}
for(int i=0; i {
for(int j=i+1; j {
if(A[i].b>A[j].b)
{
t = A[i];
A[i] = A[j];
A[j] = t;
}
}
}
GreedySelector(nAX);
cout<<“选定的会议序号为:“;
for(int i=0;i if(X[i]){
cout< }
}
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-10-25 12:07 time\bin\
目录 0 2017-11-23 13:00 time\bin\Debug\
文件 1059210 2017-09-21 15:24 time\bin\Debug\time.exe
文件 1248 2017-09-21 15:24 time\main.cpp
目录 0 2017-10-25 12:07 time\obj\
目录 0 2017-11-23 13:00 time\obj\Debug\
文件 13561 2017-09-21 15:24 time\obj\Debug\main.o
文件 1097 2017-09-21 14:41 time\time.cbp
文件 358 2017-09-21 15:26 time\time.layout
- 上一篇:循环赛日程表(分治法)
- 下一篇:STM32F407 GPIO LED点亮例程
评论
共有 条评论