问题题目

设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi 。如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的。也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。

例如:有n个活动,第i个活动开始时间和结束时间是[Si,fi),只有一个教室,活动之间不能交叠,求最多安排多少个活动?

设待安排的11个活动的开始时间和结束时间如下表  (按结束时间的非减序排列):

i

1

2

3

4

5

6

7

8

9

10

11

s[i]

1

3

0

5

3

5

6

8

8

2

12

f[j]

4

5

6

7

8

9

10

11

12

13

14

算法分析:

由于输入的活动以其完成时间的非减序排列,所以算法greedySelector每次总是选择具有最早完成时间的相容活动加入集合A中。该算法的贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。 算法greedySelector的效率极高。当输入的活动已按结束时间的非减序排列,算法只需O(n)的时间安排n个活动,使最多的活动能相容地使用公共资源。如果所给出的活动未按非减序排列,可以用O(nlogn)的时间重排。

c语言源码:

#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define max 1000int greedselect(int a[],int b[],bool t[],int n){int i,j=0,cnt=1;  t[0]=1;printf("(%d,%d)\n",a[0],b[0]);for(i=1;i<n;i++){   //每次选择当前的左区间与上一个的右区间进行比较if(a[i]>b[j]){   //如果当前的左区间大于上一个的右区间,则加入到活动中t[i]=1;printf("(%d,%d)\n",a[i],b[i]);cnt++;j=i;}}return cnt;
}int main(){int k,n,cont;bool t[max];int a[max],b[max];scanf("%d",&n);
for(k=0;k<n;k++){scanf("%d%d",&a[k],&b[k]);t[k]=0;
}
//memset(t,0,sizeof(t));//这里初始化t数组可以用memset函数
cont=greedselect(a,b,t,n);
printf("%d",cont);return 0;
}

区间贪心算法-——活动安排问题相关推荐

  1. 贪心算法——活动安排、会场安排

    重要参数:结构体,当前时间time,cmp比较器 第一题--活动安排: 任务描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就是安排学校 ...

  2. 算法设计与分析——贪心算法——活动安排问题

    问题描述:设有n个活动的集合E={1,2,-,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源. 每个活动i都有一个要求使用该资源的起始时间si和一个结束时 ...

  3. 贪心算法-活动安排问题

    贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择.当然,希望贪心算法得到的最终结果也是整体最优的.虽然贪心算法不能对所有问题都得到 ...

  4. 算法设计与分析【第七周】贪心算法 活动安排问题

    活动安排问题 设有n个活动的集合E={1,2,-,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的起始时间si和一个结束 ...

  5. Java 贪心算法 活动安排问题

    import org.junit.Test;/*** @auther qwh* @create 2022-11-21-21:39*/ public class test1 {public void s ...

  6. 贪心法——活动安排问题

    贪心法--活动安排问题 贪心法 贪心法的本质可以认为是动态规划在特定条件下的优化.贪心法满足两个性质,最优子结构性质和贪心选择性质. 满足最优子结构性质意味着问题可以被层层分解为子问题,这些子问题构成 ...

  7. 贪心算法——会场安排问题

    假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场.设计一个有效的贪心算法进行安排. 输入:第1行有一个正整数k,表示有k个待安排的活动.接下来的k行中,每行两个正整数,分别表示k个待安排活 ...

  8. 贪心算法--会场安排问题

    会场用来安排活动,每个活动有一个开始时间和一个结束时间,在某个活动的开始时间到结束时间这段范围内,其他活动不能再被安排,求最多能安排多少场活动. #include<stdio.h> #in ...

  9. 12贪心法——活动安排相容问题

    12基于贪心法的活动安排相容问题 目录 12基于贪心法的活动安排相容问题 简述贪心法 1.问题 2.解析 举个栗子 贪心策略1--按结束时间从小到大选择活动 贪心策略2--按开始时间从小到大选择活动 ...

最新文章

  1. 【经验】网络加速:pip
  2. Java架构体系学习路线图,这六点尤为重要!
  3. java的4种内部类
  4. MySQL之SQL优化详解(二)
  5. xtrbackup更换数据库_XtraBackup 备份还原 MySQL 数据库
  6. linux 信号量锁 内核,Linux内核信号量互斥锁应用
  7. 小程序分享到朋友圈功能_小程序开发日记 分享到朋友圈
  8. 链接属性rel=’external’、rel=’nofollow’、rel=’external nofollow’三种写法的区别...
  9. Python3爬取豆瓣图书Top250并写入txt文件当中
  10. ES6新特性_ES6中Map的介绍与API---JavaScript_ECMAScript_ES6-ES11新特性工作笔记032
  11. python数据结构二叉树的前序,中序,后续遍历与推导
  12. xsd文件规则和语法
  13. php主页备案号底部中间,如何获取公安备案号?如何将公安备案号放到网站底部?...
  14. 谷粒商城-个人笔记(基础篇一)
  15. 虚拟机vm安装 黑群晖 DS3617xs 6.2
  16. 如何用无桥图腾柱功率因数校正控制器实现出色的AC-DC功率转换效率
  17. MacOS 显示隐藏文件快捷键
  18. QT自定义控件设置文本过长时显示点点点……
  19. 项目结构优化设计之smv架构
  20. Guitar Pro2023吉他谱作曲和练习工具

热门文章

  1. GDCM:gdcm::ExplicitDataElement的测试程序
  2. Boost:glob测试程序
  3. ITK:在图像中查找连接的组件
  4. VTK:可视化之AxisActor
  5. VTK:图片之ImageImport
  6. OpenCV基于均值漂移的跟踪的实例(附完整代码)
  7. C语言实现Hanoi算法塔的功能(附完整源码)
  8. c++运算符和结合性
  9. C语言ctype相关的几个函数
  10. jsp实现html注册,jsp+servlet实现最基本的注册登陆功能