[算法题] 安排会议室——贪心算法的应用
题目描述
[题目描述] 在大公司里,会议是很多的,开会得有场子,要场子你得先在电子流里预订。 [Input] [Output] [I/O Example] Output |
练习模板
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int tc, T;
cin >> T;
for(tc = 0; tc < T; tc++)
{
//TO DO here
}
return 0;//Your program should return 0 on normal termination.
}
代码实现
题目中要求会议时间不可以冲突,所以可以利用贪心算法,尽可能的选择会议时间结束较早的会议室,这样就能安排最多的会议室。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class MeetingRoom {
public:
int index;
int start;
int end;
public:
MeetingRoom(int i, int s, int e) : index(i), start(s), end(e) {}
};
bool isEndEarly(const MeetingRoom r1, const MeetingRoom r2) {
return (r1.end < r2.end);
}
int main(int argc, char** argv)
{
int tc, T;
int num = 0;
int count = 0;
int index = 0;
int start = 0;
int end = 0;
vector<MeetingRoom> rooms;
freopen("input.txt", "r", stdin);
cin >> T;
for(tc = 0; tc < T; tc++)
{
rooms.clear(); // clear vector
// get all the info of rooms
cin >> num;
for (int i = 0; i < num; i++) {
cin >> index >> start >> end;
MeetingRoom room(index, start, end);
rooms.push_back(room);
}
// sort rooms for end time
sort(rooms.begin(), rooms.end(), isEndEarly);
// use greedy algorithm to solve promblem
count = 1;
MeetingRoom prev = rooms[0];
for (vector<MeetingRoom>::iterator it = rooms.begin() + 1; it != rooms.end(); it++) {
MeetingRoom current = *it;
if (current.start >= prev.end) {
count++;
prev = current;
}
}
cout << count << endl;
}
return 0;
}
转载于:https://www.cnblogs.com/jingmoxukong/p/4362211.html
[算法题] 安排会议室——贪心算法的应用相关推荐
- c语言贪心算法合并箭,LeetCode刷题题库:贪心算法
LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...
- 活动安排问题(贪心算法)
问题描述: 有n个活动的活动集合E ,其中每一个活动都要求使用同一个资源,而在同一个时刻内资源只能被一个活动使用,每一个活动都有开始是时间和结束时间,要求从活动集合E中选出m个活动,使着m个活动都能顺 ...
- _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树
_32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...
- java贪心算法 区间调度_贪心算法-区间调度问题解之证明(示例代码)
一.贪心算法 定义:一个算法是贪心算法,如果它是通过一些小的步骤来一个求解,并且在每一步根据局部情况选择一个决定,使得某些主要的指标得到优化. 二.区间调度问题 1. 问题:我们有一组需求{1,2,3 ...
- (十四)算法设计思想之“贪心算法”
算法设计思想之"贪心算法" 贪心算法是什么 LeetCode:455.分饼干 LeetCode:122.买卖股票的最佳时机II 思考题 贪心算法是什么 贪心算法是算法设计中的一种方 ...
- 疯子的算法总结(四)贪心算法
一.贪心算法 解决最优化问题的算法一般包含一系列的步骤,每一步都有若干的选择.对于很多最优化问题,只需要采用简单的贪心算法就可以解决,而不需要采用动态规划方法.贪心算法使所做的局部选择看起来都是当前最 ...
- _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II
_28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...
- 算法——人的天性贪心算法
相应的练习代码:https://github.com/liuxuan320/Algorithm_Exercises 0. 写在前面 说起贪心算法,可能是我们最为熟悉的算法了.正如我标题所说的,贪心算法 ...
- 算法系列(二):贪心算法--Huffman编码
算法系列(二):贪心算法--Huffman编码 一.分析 问题描述: 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法.其压缩率通常在20%-90%之间.哈夫曼编码算法使用字符在文件中出现的频率 ...
- 最早结束时间安排活动--贪心算法证明
活动安排的最优解,一般是贪心算法的思路求取.每一次选择 相对于当前时间 最早结束的活动,得到的子序列是活动的一个最优安排,即在一段时间内安排的活动数最多. 设定命题 贪心算法执行到第k步,选择了k项活 ...
最新文章
- 猜数字游戏_FLEX版
- Delphi组件开发-在窗体标题栏添加按钮
- c语言编译成功,[C/CPP系列知识] 那些程序C语言可以编译通过但C++无法编译成功 Write a C program that won’t compile in C++...
- ssh整合学习(1)
- 深入理解 JVM Class文件格式(十)
- lambda表达式优化反射_反射选择器表达式
- 如何解决光端机的开关量问题?
- 【C++深度剖析教程1】C++中的经典问题解析-c++中的对象的构造顺序与析构顺序
- python mount回调函数_python类(4)——自己造第一个轮子
- VISIO 连接线转角居然默认不是直角,每次要改格式
- ps隐藏路径快捷键和PS隐藏路径的三种方法
- 数据结构第一章概论习题及答案
- Java中重载和重写的区别
- 异地IT驻场外包人员如何管理?
- 2015年高考物理复习重点
- typescript egg mysql_Egg.js egg-mysql 连接MySQL 报 AppWorkerDiedError 错误
- iOS小技能: OCR 之身份证识别 (正反面) 【 应用场景:物流类型app进行实名认证】
- 使用zinnia制作android手写输入功能(下)-------------------在项目中使用zinnia
- 心理学:《人性的弱点》【美】卡耐基
- c语言贪心算法排课,*排课软件常用算法介绍*兴文排课*学校经常用的免费自动排课软件...
热门文章
- php ip 短时间 重复,记录服务器端ip,记录这个ip第一次启动文件的时间,并且排除重复的ip...
- python3.x编程模板总结
- 浅谈算法和数据结构: 二 基本排序算法
- 在linux服务器上安装sublime编辑器
- Idea和Eclipse快捷键对比
- 696.计数二进制子串(力扣leetcode) 博主可答疑该问题
- NextPermutation,寻找下一个全排列
- 【转】NSBundle的使用,注意mainBundle和Custom Bundle的区别
- CDC相关知识点总结
- HDOJ 2084 数塔 简单解题报告