贪心算法之活动安排问题

活动安排问题-贪心算法 贪心算法:贪心算法总是做出在当前看来最好的选择,也就是贪心算法不从整体最优化的角度考虑。它所做出的选择只是在某种意义上的局部最优选择 性质:最优子结构性质当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质 与动态规划的差异:贪心算法从局部出发,每一次得到的最优解,在考虑求解最优解的时候沿用上一次的最优解,之前的最优解不做保留。动态规划从全局出发,全局最优解中一定包含某个局部最 阅读详情

问题描述:

设有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相容。

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


算法greedySelector的计算过程如图所示。图中每行相应于算法的一次迭代。阴影长条表示的活动是已选入集合A的活动,而空白长条表示的活动是当前正在检查相容性的活动。

//活动安排问题
#include <iostream>

using namespace std;

template <typename  Type>
void GreedySelector(int n, Type s[],Type f[],bool A[])
{
    A[1] = true;
    int j = 1;
    for(int i = 2; i <= n; i++){
        if(s[i] >= f[j]){
            A[i] =  true;
            j = i;
        } else {
            A[i] = false;
        }
    }
}

int main()
{
    int n;
    int *s = 0, *f = 0;

    cout<<"请输入活动的个数:"<<endl;

    cin>>n;

    cout<<"请输入每个活动的开始时间:"<<endl;

    s = new int[n+1];
    f = new int[n+1];

    for(int i = 1; i <= n; i++){
        cin>>s[i];
    }
    cout<<"请输入每个活动的结束时间:"<<endl;
    for(int i = 1; i <= n; i++){
        cin>>f[i];
    }

    bool *A = new bool[n];
    GreedySelector(n,s,f,A);

    cout<<"活动安排的最大相容活动子集合:"<<endl;
    for(int i  = 1; i <= n; i++){
        if(A[i] == true){
            cout<<"活动"<<i<<" ";
        }
    }
    return 0;
}


活动安排问题(贪心算法及证明) 会场安排问题(贪心算法):贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。2.相关代码:#include&lt;stdio.h&gt; #define M 11 ... 阅读详情

相关推荐

贪心算法-活动安排问题

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

qq_22141033的博客 3363

贪心算法

贪心算法 用途:求最优解一类的问题。 基本思想: 将问题的求解过程看作是一系列选择,每次选择一个输入,每次选择都是当前状态下的最好选择(局部最优解).每作一次选择后,所求问题会简化为一个规模更小的子问题.从而通过每一步的最 优解逐步达到整体的最优解。 常见的问题:活动安排 , 背包问题,

Godfryfry的博客 1527

贪心算法一定能得到最优解的证明【活动安排问题举例】

贪心算法一定能得到最优解的证明 按照老师说法是 分为三步: 证明总存在一个以贪心选择开始的最优解。 此问题具有最优子结构的性质。 用数学归纳法,总结得到结论。 以活动安排为例,首先,我们按照按照活动结束时间非递增排序,即从小到大得到一个序列 E{1、2、…、n),我们可以知道1这个活动是一定会被选到的,因为他的结束时间最早,我们可以有更多的时间去观看其他比赛。 假设具有一个最优解A,且A中的活...

weixin_44079946的博客 1万+

活动安排问题(C语言实现)——贪心算法应用(2)

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

_地才 1万+

华为防火墙NAT避坑指南:当双ISP出口遇到服务器发布,这些细节不注意会翻车

本文深入解析华为防火墙在双ISP出口环境下服务器发布的实战配置,重点探讨no-reverse参数对Server-Map表的影响、源进源出功能的实现及线路切换时的会话保持问题。通过策略路由和智能选路技术,确保HTTP/FTP服务在多运营商链路中的高可用性,避免路径不对称和NAT映射冲突等常见陷阱。

weixin_30897233的博客 548

NXP KW45开发实战:如何在MCUXpresso IDE中正确配置J-Link并解决设备识别问题

本文详细介绍了在MCUXpresso IDE中配置J-Link以支持NXP KW45无线MCU开发的实战指南。从环境准备到J-Link深度配置,再到烧录流程优化和高级调试技巧,帮助开发者高效解决设备识别问题并提升开发效率。特别推荐使用JLinkRemoteServer.exe进行多设备并行调试,并提供了烧录速度优化和低功耗调试的实用技巧。

gray5的博客 864

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

关于贪心算法:https://blog.youkuaiyun.com/qq_40452317/article/details/88875193 活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。 问题描述和分析 设有n个活动的集合E={1,2,…,n},其中...

朝歌 1万+

TSMaster实战:如何用LIN总线唤醒你的汽车电子系统(附波形分析)

本文通过TSMaster工具实战解析LIN总线唤醒机制。详细介绍了LIN网络唤醒的协议要求、时序参数计算,并演示了如何在TSMaster中配置唤醒信号、捕获分析波形,以及验证休眠流程。文章结合常见问题排查,为汽车电子工程师提供了从理论到实践的完整调试指南。

weixin_28308325的博客 459

1422:活动安排

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

C_Dreamy的博客 709

OCV/AOCV/SOCV的介绍和应用

library中的cell delay是在某个固定的PVT(operating condition)下仿真得出的。,cell的delay并不是一个固定值,而是一个随机值,遵循高斯分布或门特卡洛分布,在STA中用OCV来模拟这一『特征』。OCV全称on chip variation,用于描述不同管子间由于工艺偏差、电压降、温度变化引起的delay变化。,也用于描述工艺偏差引起的net厚度宽度的变化从而导致net的电容电阻变化。优点:设置起来比较简单粗暴,对于不那么先进的工艺可行!的影响,更贴合实际。

m0_61003348的博客 8979

Python爬虫实战:深度解析携程/飞猪酒店评论API与大数据采集

本文详细介绍了如何通过Python爬虫技术获取携程和飞猪平台的酒店评论数据。我们涵盖了从API分析、反爬虫对策到数据存储和处理的完整流程。API逆向分析:通过浏览器开发者工具发现和分析API接口反爬虫对策:使用请求头随机化、IP代理、浏览器自动化等技术异步处理:使用asyncio提高爬取效率数据质量:实现数据清洗和质量检查机制系统架构:构建可扩展的分布式爬虫系统未来改进方向:机器学习识别验证码分布式爬虫架构实时数据流处理更智能的反反爬虫策略。

2201_76125261的博客 599

贪心!

传说中的贪心算法,今日总算有所了解了…… 贪心算法:用来解决一些活动安排问题,可以很好地求出最大活动容量(整体最优解)。比如今年暑假不AC就是一个例子…… 另外举例子:活动安排--- 设待安排的11个活动的开始时间和结束时间按结束时间的非减序排列如下:   i12345

空中飞来的城堡 667

10.28华为OD机试真题 新系统 - 社交网络消息转发 (Java/Py/C/C++/Js/Go)

10.28华为OD机试真题 新系统 - 社交网络消息转发 (Java/Py/C/C++/Js/Go)

算法大师! 412

0021算法笔记——【贪心算法】贪心算法与活动安排问题

1、贪心算法      (1)原理:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。       (2)特性:贪心算法采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小

liufeng_king的专栏 7万+

Dify 第 13 篇 Dify 工作流 详解

工作流通过将复杂任务分解为节点降低复杂度,提升LLM应用的性能和稳定性。Dify工作流分为两类:Chatflow面向对话场景(如客服),支持多轮对话;Workflow面向批处理场景(如翻译),提供逻辑节点实现自动化。核心概念包括节点、变量(系统/会话/环境变量)及应用类型差异:Chatflow支持中间输出和对话历史,Workflow仅支持结束节点输出。系统变量以"sys"开头,用于全局数据传递,不同应用类型变量不同,如Chatflow的sys.query存储用户输入,Workflow的s

甘蓝的专栏 3246

解锁RK平台黑科技:DPDK加速与硬件卸载实战

本文探讨了在RK平台上通过DPDK加速与硬件卸载技术构建高性能网络架构的方法。RK平台凭借强大的硬件性能为高并发网络处理提供基础,而DPDK通过用户态驱动、轮询机制等技术绕过内核瓶颈,显著提升数据包处理效率。硬件卸载则将校验和计算等任务交由专用硬件,释放CPU资源。实践案例显示,该方案可使网络吞吐量提升至理论极限,延迟降至5ms以下,CPU利用率降低40%。文章详细介绍了配置步骤、优化方法和常见问题解决方案,并展望了该技术在5G、车联网等新兴领域的应用前景。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1279

贪心算法解决活动安排问题

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

razorEdge的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

贪心算法——活动安排问题(C++实现)

贪心算法——活动安排问题(C++实现) 活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi 。如果选择了活动i,则它在半开

wmx1117的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

活动安排问题——贪心算法解决方案

1、概述 (1)案例: 多个社团申请同一间教室开会,问如何分配和安排,使得此教室在一天中能够分配给更多的社团使用 一台公共电脑可以被许多人申请使用,如何分配使得此电脑在一天中能够为更多的人服务使用 (2)活动安排问题概述 活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼...

wangqsse的博客 7546

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【贪心算法】活动安排问题

活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。 该问题要求高效地安排一系列争用某一公共资源的活动。 贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。 【问题描述】 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。 每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi。如果选择了活动i,则它在半开时间区间[si ,fi .

Woo~ 5779

贪心算法实现活动安排问题

贪心算法实现活动安排问题: 设有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相容。 活动安排问题就是要在所给的活动集合中选出最大

qq_44423388的博客 4642

活动安排问题 之 贪心算法

贪心算法思想:顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。 活...

田野中的锋芒 1647

贪心算法之活动安排问题(填表详解+思路解析)

贪心算法 总是选择当前看起来最优的选择(局部最优解),得到的结果是一个整体最优解。 但是总是选择局部最优解并不总是能得到整体最优解,需要在问题具有:贪心选择性和优化子结构时才成立。 贪心选择性:第一次做出贪心选择是正确的; 优化子结构:第一次做完贪心选择后,得到一个与原问题定义相同(但输入不同)的子问题; 贪心算法的基本要素 贪心选择性质 1.贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。 2.贪心

weixin_44952817的博客 1万+

活动安排问题(贪心算法)

引入:        贪心算法总是做出在当前看来是最好的选择。也就是说贪心算法并不是从整体最优上加以考虑,所做的选择只是在某种意义上的局部最优选择。 贪心算法采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪心法不要回溯。能够用贪心算法求解的问题一般具有两个重要特

weixin_44469806的博客 6737

活动安排问题与贪心算法

贪心算法: 在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。 从贪心算法的定义可以看出,贪心算法不是从整体上考虑问题,它所做的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。 如果一个问题同时可以用几种问题解决,贪心算法应该是最好的选择之一...

努力进阶的小菜鸟 2895
上一篇: 贪心算法之多机调度问题
下一篇: 分治策略之二分搜索技术
Hy_Fighting
博客等级 码龄15年 11粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值