算法—会议最大合理安排问题

参考:趣学算法

代码:

#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)

如果存在什么问题,欢迎批评指正!谢谢!

算法---会议最大安排问题相关推荐

  1. C语言会场安排问题贪心算法,贪心算法解决会场安排问题多处最优服务次序问题(含源代码).doc...

    贪心算法解决会场安排问题多处最优服务次序问题(含源代码) 西 安年月日-,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源 ...

  2. 算法笔记(0002) - 【贪心算法】活动安排问题

    贪心算法 原理 在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许 ...

  3. 贪心算法解决活动安排-Python实现(排序+贪心选择)

    贪心算法解决活动安排 问题 问题概述 分析问题 解决问题 编程 编程流程以及数据类型选择 发现问题以及解决 最终实现 总结 程序缺陷以及完善 解题心路历程 问题 问题概述 设有n个活动的集合E={1, ...

  4. 贪心算法之活动安排问题(填表详解+思路解析)

    贪心算法 总是选择当前看起来最优的选择(局部最优解),得到的结果是一个整体最优解. 但是总是选择局部最优解并不总是能得到整体最优解,需要在问题具有:贪心选择性和优化子结构时才成立. 贪心选择性:第一次 ...

  5. 贪心算法之活动安排问题C语言代码

    贪心算法之活动安排问题C语言 问题描述 该问题要求高效地安排一系列争用某一公共资源的活动. n:活动的个数,其中每个活动都要求使用同一资源,如演讲会场等.而且在同一时间内只有一个活动能使用这一资源. ...

  6. 利用ASP.NET日期控件制作“会议日程安排”(贴首页过把瘾)

    本文转载自: https://www.cnblogs.com/peaceli/archive/2012/08/06/1359862.html 作者:peaceli 转载请注明该声明. 大家应该比较熟悉 ...

  7. 团结波士顿更新:Rob Pardo,完整会议日程安排,并通过Unity展示柜制作!

    Hey everyone, Unite Boston is quickly approaching as it's now only one month away. We're excited to ...

  8. 贪心算法实现活动安排问题

    贪心算法实现活动安排问题: 设有n个活动的集合E={1,2,...,n},其中,每个活动都要求使用同一资源,如演讲会场等,而在同一时间内,只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的 ...

  9. 【CN-Erlounge-IV】会议议程安排

    以下是会议议程安排.更多信息访问: http://ecug.org/ 2009-11-6 讲师入住酒店 会务人员&讲师小聚 2009-11-7 08:30 ~ 09:00 签到 09:00 ~ ...

最新文章

  1. yeomen/bower/grunt
  2. 中国厂商加速5G前瞻性部署
  3. MyBatis-学习笔记11【11.Mybatis的缓存】
  4. hibernate 中id生成策略
  5. Javascript JSON格式
  6. solaris下修改 IPMP 配置
  7. DC.SetMapMode()的用法记录
  8. EditPlus+NAnt构建轻巧的.NET开发环境
  9. 管理感悟:计划是给谁看的
  10. 内外网同时上怎么设置
  11. linux上多个CUDA切换使用(小白教程)
  12. VITS 语音合成完全端到端TTS的里程碑
  13. 位偏移 java_时区和偏移类 / Zone and Offset
  14. 30款常用的大数据分析工具推荐(最新)
  15. dell idrac 复位_重置DELL R630 iDRAC访问密码
  16. ISIS与OSPF区别
  17. 补天漏洞平台为什么能吸引众多白帽和企业?
  18. Python 学习入门(26)—— 装饰器
  19. 损失函数及对应的任务(待续)
  20. 亲身经历体会乐歌和爱格升显示器支架,到底谁更胜一筹?

热门文章

  1. linux c之使用#define定义多行函数总结
  2. 汇编语言之寄存器(内存访问)
  3. Andorid之教你全手工去除定制软件
  4. OSI各层相关的协议
  5. 【前端就业课 第一阶段】HTML5 零基础到实战(五)基础元素
  6. sql 某列数据全部为0则不显示该列_数据产品经理养成记(五):汇总分析
  7. 将太阳光聚集起来可以用来做饭!?
  8. 300 s7 置零指令_西门子1200与200、200 SMART置位复位指令的区别
  9. 件工程项目开发最全文档模板_一文带你了解微信小程序社区和小程序开发
  10. mysql序列increment_MySQL 序列 AUTO_INCREMENT