日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法---会议最大安排问题

發布時間:2023/12/4 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法---会议最大安排问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算法—會議最大合理安排問題

參考:趣學算法

代碼:

#include <stdio.h> #include <stdlib.h> typedef struct meet {int beg;//開始int end;//結束int num;//會議編號 }meet; int cmp44(meet m1,meet m2) {//越早結束的越優先,一樣早結束的越晚開始的越優先if (m1.end == m2.end) {if (m1.beg > m2.beg) {return 1;}}else if (m1.end < m2.end) {return 1;}return 0; } int quickSort(meet a[], int l, int h) {//快速排序int i = l, j = h;meet p = a[l];while (i < j) {while (i<j&&cmp44(p,a[j])) {//從右往左遍歷查找與p相比,滿足會議的結束時間從小到大排序,會議開始時間從大到小j--;}if (i < j) {a[i++] = a[j];}while (i < j&&cmp44(a[i],p)) {//從左往右遍歷查找與p相比,滿足會議的結束時間從小到大排序,會議開始時間從大到小i++;}if (i < j) {a[j--] = a[i];}}a[i] = p;//分界的值,左邊小于等于p,右邊大于preturn i; } void fenZhi(meet a[], int l, int h) {//分治if (l < h) {int mid = quickSort(a, l, h);//以mid為分界線,進行分治,然后遞歸下去排序fenZhi(a, l, mid - 1);fenZhi(a, mid + 1, h);} } void meetSelect(meet Meet[],int n) {int last = Meet[0].end;int ans = 0;//統計會議總數ans++;printf("選擇的會議%d,開始時間為%d,結束時間為%d\n", Meet[0].num, Meet[0].beg, Meet[0].end);for (int i = 1; i < n; i++) {if (Meet[i].beg >= last) {ans++;last = Meet[i].end;printf("選擇的會議%d,開始時間為%d,結束時間為%d\n",Meet[i].num,Meet[i].beg,Meet[i].end);}}printf("會議總數為%d\n",ans); } int main() {meet Meet[100];int n;printf("輸入會議數:");scanf_s("%d", &n);for (int i = 0; i < n; i++) {scanf_s("%d%d", &Meet[i].beg, &Meet[i].end);Meet[i].num = i + 1;}fenZhi(Meet, 0, n - 1);printf("會議編號 會議開始時間 會議結束時間\n");for (int i = 0; i < n; i++) {printf("%d %d %d\n", Meet[i].num, Meet[i].beg, Meet[i].end);}meetSelect(Meet, n);printf("\n");system("pause");return 0; }

測試截圖:

時間復雜度O(nlogn),空間復雜度O(1)

如果存在什么問題,歡迎批評指正!謝謝!

總結

以上是生活随笔為你收集整理的算法---会议最大安排问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。