🎉 每个不曾起舞的日子都是对生命的辜负
🎉写在前面
期末考试邻近,为了更好的应对《算法设计与分析》这门课程,我把书上以及老师讲过的案例都详细的做一个重现及解剖,让你熟记每一个潜在的考点,希望能给大家帮助。
🎉目录
问题描述
贪心策略
算法设计
代码实现
选择结构体
随机输入会议
按结束时间排序
最终会议确定
结束语
问题描述设有n个会议的集合C={1,2,…,n},其中每个会议都要求使用同一个资源(如会议室),而在同一时间内只能有一个会议使用该资源。每个会议i都有要求使用该资源的起始时间bi和结束时间ei,且bi < ei 。如果选择了会议i使用会议室,则它在半开区间[bi, ei)内占用该资源。如果[bi, ei)与[bj , ej)不相交,则称会议i与会议j是相容的。会场安排问题要求在所给的会议集合中选出最大的相容活动子集,也即尽可能地选择更多的会议来使用资源。
贪心策略1、选择最早开始时间且不与已安排会议重叠的会议
2、选择使用时间最短且不与已安排会议重叠的会议
3、选择具有最早结束时间且不与已安排会议重叠的会议
这里我选取第三种方法
算法设计设有11个会议等待安排,用贪心法找出满足目标要求的会议集合。这些会议按结束时间的非减序排列如表所示
11个会议按结束时间的非减序排列表:
#include
#include "会场安排.h"
#define n 11
struct meeting{
int B;//开始时间
int E;//结束时间
};
using namespace std;
int main()
{
meeting M[n] = { {8,11}, {8,12}, {2,13}, {12,14}, {1,4},
{3,5}, {0,6}, {5,7}, {3,8}, {5,9}, {6,10} };
for(int i=0;i allowedTime) {
j++;
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?