【程序】會議安排

 關於安排會議,利用貪心算法,選擇具備最先結束時間且與已安排內容相容的會議安排ios

 參見:《趣學算法》,陳小玉,2.4算法

運行結果:ide

 

代碼:spa

 頭文件:code

#pragma once
#include<algorithm>
#include<iostream>


class setMeet {
public:
    void init();
    void solve();
private:
    int n, ans;   //n:會議總數 ans:最大的安排會議總數
};

 

 源文件:blog

 1 #include "setMeet.h"
 2 using namespace std;
 3 
 4 struct Meet
 5 {
 6     int beg;    //記錄會議的開始時間
 7     int end;
 8     int num;      //會議編號
 9 }meet[1000];    //會議的最大個數爲1000
10 
11 
12 void setMeet::init()   //讀入數據
13 {
14     int s, e;
15     cout << "輸入會議總數: " << endl;
16     cin >> n;
17     int i;
18     cout << "輸入會議的開始時間與結束時間,以空格分開:" << endl;
19     for (i = 0; i < n; ++i)
20     {
21         cin >> s >> e;
22         meet[i].beg = s;
23         meet[i].end = e;
24         meet[i].num = i + 1;
25     }
26 }
27 
28 bool cmp(Meet x, Meet y)
29 {
30         if (x.end == y.end)
31             return x.beg > y.beg;
32         return x.end < y.end;
33 }
34 
35 void setMeet::solve()
36 {
37     sort(meet, meet + n, cmp);//對會議按結束時間排序
38     cout << "拍完序的會議時間以下:" << endl;
39     int i;
40     cout << "會議編號" << "  開始時間" << "  結束時間" << endl;
41     for (i = 0; i < n; i++)
42     {
43         cout << "  " << meet[i].num << "\t\t" << meet[i].beg << "\t" << meet[i].end << endl;
44     }
45         cout << "----------------------------------------------------------------" << endl;
46         cout << "選擇的會議 的過程:" << endl;
47         cout << " 選擇第" << meet[0].num << "個會議" << endl;//選中了第一個會議
48         ans = 1;
49         int last = meet[0].end;//記錄剛剛選中的會議的結束時間
50         for (i = 1; i < n; i++)
51         {
52             if (meet[i].beg >= last)
53             {
54                 ans++;
55                 last = meet[i].end;
56                 cout << " 選擇第" << meet[i].num << "個會議" << endl;
57             }
58         }
59         cout << "最多能夠安排" << ans << "個會議" << endl;
60     
61 }
View Code

 

主文件:排序

#include"setMeet.h"
using namespace std;

int main()
{
    setMeet sm;
    sm.init();
    sm.solve();

    cin.ignore();
    cin.ignore();
    cin.ignore();

    
    return 0;
}
相關文章
相關標籤/搜索