会议安排问题C++贪心算法
文章目录
- 1. 实现活动安排问题的贪心算法
- 2.问题建模;
- 3.算法设计;
- 4.编码实现;
- 5.测试数据;
- 6.程序运行结果;
- 7.算法分析;
1. 实现活动安排问题的贪心算法
1.认真审阅题目,明确题目的已知条件和求解的目标;
给定n个会议的开始时间和结束时间,求解在尽可能的选择更多的会议来使用资源
2.问题建模;
3.算法设计;
(1)初始化:将n各会议的开始时间存储在数组B中,将n各会议的结束时间存储在十足E中,且按照结束时间的非减排序;e1 <= e2 ……,数组B需要做相应的调整,采用集合A来存储问题的解,即所选择的会议集合,会议i如果在集合A中,当且仅当A[i] = true
(2)根据贪心策略,算法GreedySelector首先选择会议1,即当A[1] = true
(3)依次扫描每一个会议,如果会议i的开始时间不小于最后一个选入集合A中的会议的结束时间,即会议i与A中会议相容,即将会议i加入集合A中,否则,放弃会议i,继续检查下一个会议与集合A中会议的相容性
4.编码实现;
#include <bits/stdc++.h>
using namespace std;
struct node
{int start, end;
}greedytime[10010];
int cmp(node a, node b){return a.end < b.end;
}
void GreedySelector(int n, struct node time[], bool A[]){//E中存放的是结束时间,按照非减序排列,B中做相应的调整int i, j;A[1] = true;int begin = time[1].end;j = 1;//首先将第一个 会议放入A中 i = 2;//用数组中第二个元素的开始时间与第一个的结束时间相比较,判断是否相容 while(i <= n){if(time[i].start >= begin){A[i] = true;//如果相容,则将该会议加入A数组中 begin = time[i].end;}else{A[i] = false;}i++;}
} int main(){int n;cin >> n;for(int i = 1; i <= n; i++){cin >> greedytime[i].start;//输入开始时间 cin >> greedytime[i].end;//输入结束时间 }bool A[10010];int count = 0;sort(greedytime,greedytime+n,cmp); GreedySelector(n,greedytime,A);for(int i = 1; i <= n; i++){if(A[i] == true){count++; } }cout << "可以安排" << count << "个会议" << endl;return 0;
}
5.测试数据;
第一组:
输入:
3
1 5
2 8
6 8
输出:可以安排两个会议
第二组:
输入:
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 14
输出: 可以安排4个会议
6.程序运行结果;
7.算法分析;
从GreedySelector算法的描述中可以看出,该算法的时间主要消耗在将搞个活动按结束时间从小到大排序操作。若采用快速排序算法进行排序,算法的时间复杂性为O(nlogn)。显然该算法的空间复杂性是常数阶S(N) =
O(1)
会议安排问题C++贪心算法相关推荐
- 活动安排问题与贪心算法
贪心算法: 在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法. 从贪心算法的定义可以看出 ...
- 安排电影院座位--贪心算法
LeetCode 安排电影院座位 如上图所示,电影院的观影厅中有 n 行座位,行编号从 1 到 n ,且每一行内总共有 10 个座位,列编号从 1 到 10 . 给你数组 reservedSeats ...
- 【算法分析】实验 1. 基于贪心的会议安排问题
目录 实验内容 实验目的 环境要求 实验结果 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 实验总结 附录:测试数据 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设计. ...
- 活动安排问题--贪心算法
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动 ...
- 贪心算法《活动时间安排问题》
活动安排问题 问题表述:设有n个活动的集合E = {1,2,-,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源. 每个活i都有一个要求使用该资源的起始时间 ...
- 贪心算法-活动安排问题
贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择.当然,希望贪心算法得到的最终结果也是整体最优的.虽然贪心算法不能对所有问题都得到 ...
- 算法笔记(0002) - 【贪心算法】活动安排问题
贪心算法 原理 在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许 ...
- 贪心算法之活动安排问题(填表详解+思路解析)
贪心算法 总是选择当前看起来最优的选择(局部最优解),得到的结果是一个整体最优解. 但是总是选择局部最优解并不总是能得到整体最优解,需要在问题具有:贪心选择性和优化子结构时才成立. 贪心选择性:第一次 ...
- 【贪心算法】活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子. 该问题要求高效地安排一系列争用某一公共资源的活动. 贪心算法提供了一个简单.漂亮的方法使得尽可能多的 ...
- 会场安排问题贪心算法
问题描述: 假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场.设计一个有效的贪心算法进行安排(这个问题实际上是著名的图着色问题.若将每一个活动作为图的一个顶点,不相容活动间用边相连.使相邻 ...
最新文章
- java jdbc 工具_实现JDBC的工具类
- cad2020 开始_如何设置CAD2020经典模式,原来这么简单,一起来看看
- 面向切面(AOP)之Spring接口方式 schema配置方式 aspectj注解方式
- 基于SpringBoot和Vue的个人博客系统
- 某马Java架构师实战学习手册
- golang 获取本地ip
- opencvsharp中resize图像
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨员工薪水中位数【难度困难】
- electron-vue解决打包错误、无法调用出开发者工具(亲测有效)
- Nginx+MySQL+PHP+Memcache+Vsftpd一键安装包
- 数组----数组的拷贝、排序、遍历、引用,console交互
- vrrp 理论和配置
- Ora-12505 故障
- 微软为 Chrome 带来更流畅的页面滚动效果,来自 Edge
- 计算机等级考试二级c++2013 南开题库 答案光碟,全国计算机等级考试二级C++上机题库试卷一2013年.pdf...
- 思科、华为、华三交换机的线缆检测功能
- Python安装和环境配置
- 左耳朵耗子:编程的本质是什么?
- 2022年信息安全工程师考试知识点:信息安全管理基础
- 劲爆!群晖docker视频