資源簡介
設有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?<“請輸入會議總數:“?<????cin>>n;
????A?=?(time*)malloc(n*sizeof(time));
????X?=?(bool*)malloc(n*sizeof(bool));
????for(int?i=0;i ????????X[i]=false;
????}
????cout?<“請按順序輸入會議開始時間:“?<????for(int?i=0;?i ????{
????????cin>>A[i].a;
????}
????cout?<“請按順序輸入會議結束時間:“?<????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點亮例程
評論
共有 條評論