• 大小: 301KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: 贪心法  

资源简介

设有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

评论

共有 条评论

相关资源