算法---会议最大安排问题
算法—会议最大合理安排问题
参考:趣学算法
代码:
#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)
如果存在什么问题,欢迎批评指正!谢谢!
算法---会议最大安排问题相关推荐
- C语言会场安排问题贪心算法,贪心算法解决会场安排问题多处最优服务次序问题(含源代码).doc...
贪心算法解决会场安排问题多处最优服务次序问题(含源代码) 西 安年月日-,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源 ...
- 算法笔记(0002) - 【贪心算法】活动安排问题
贪心算法 原理 在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许 ...
- 贪心算法解决活动安排-Python实现(排序+贪心选择)
贪心算法解决活动安排 问题 问题概述 分析问题 解决问题 编程 编程流程以及数据类型选择 发现问题以及解决 最终实现 总结 程序缺陷以及完善 解题心路历程 问题 问题概述 设有n个活动的集合E={1, ...
- 贪心算法之活动安排问题(填表详解+思路解析)
贪心算法 总是选择当前看起来最优的选择(局部最优解),得到的结果是一个整体最优解. 但是总是选择局部最优解并不总是能得到整体最优解,需要在问题具有:贪心选择性和优化子结构时才成立. 贪心选择性:第一次 ...
- 贪心算法之活动安排问题C语言代码
贪心算法之活动安排问题C语言 问题描述 该问题要求高效地安排一系列争用某一公共资源的活动. n:活动的个数,其中每个活动都要求使用同一资源,如演讲会场等.而且在同一时间内只有一个活动能使用这一资源. ...
- 利用ASP.NET日期控件制作“会议日程安排”(贴首页过把瘾)
本文转载自: https://www.cnblogs.com/peaceli/archive/2012/08/06/1359862.html 作者:peaceli 转载请注明该声明. 大家应该比较熟悉 ...
- 团结波士顿更新:Rob Pardo,完整会议日程安排,并通过Unity展示柜制作!
Hey everyone, Unite Boston is quickly approaching as it's now only one month away. We're excited to ...
- 贪心算法实现活动安排问题
贪心算法实现活动安排问题: 设有n个活动的集合E={1,2,...,n},其中,每个活动都要求使用同一资源,如演讲会场等,而在同一时间内,只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的 ...
- 【CN-Erlounge-IV】会议议程安排
以下是会议议程安排.更多信息访问: http://ecug.org/ 2009-11-6 讲师入住酒店 会务人员&讲师小聚 2009-11-7 08:30 ~ 09:00 签到 09:00 ~ ...
最新文章
- yeomen/bower/grunt
- 中国厂商加速5G前瞻性部署
- MyBatis-学习笔记11【11.Mybatis的缓存】
- hibernate 中id生成策略
- Javascript JSON格式
- solaris下修改 IPMP 配置
- DC.SetMapMode()的用法记录
- EditPlus+NAnt构建轻巧的.NET开发环境
- 管理感悟:计划是给谁看的
- 内外网同时上怎么设置
- linux上多个CUDA切换使用(小白教程)
- VITS 语音合成完全端到端TTS的里程碑
- 位偏移 java_时区和偏移类 / Zone and Offset
- 30款常用的大数据分析工具推荐(最新)
- dell idrac 复位_重置DELL R630 iDRAC访问密码
- ISIS与OSPF区别
- 补天漏洞平台为什么能吸引众多白帽和企业?
- Python 学习入门(26)—— 装饰器
- 损失函数及对应的任务(待续)
- 亲身经历体会乐歌和爱格升显示器支架,到底谁更胜一筹?
热门文章
- linux c之使用#define定义多行函数总结
- 汇编语言之寄存器(内存访问)
- Andorid之教你全手工去除定制软件
- OSI各层相关的协议
- 【前端就业课 第一阶段】HTML5 零基础到实战(五)基础元素
- sql 某列数据全部为0则不显示该列_数据产品经理养成记(五):汇总分析
- 将太阳光聚集起来可以用来做饭!?
- 300 s7 置零指令_西门子1200与200、200 SMART置位复位指令的区别
- 件工程项目开发最全文档模板_一文带你了解微信小程序社区和小程序开发
- mysql序列increment_MySQL 序列 AUTO_INCREMENT