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

PTA(二十九) 算法设计与分析 第七章 贪心法 7-5 会场安排问题 (20 point(s)) 7-5 会场安排问题 (20 point(s)) 题目来源:王晓东《算法设计与分析》 假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的 贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个 顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小 会场数。) 输入格式: 第一行有 1 个正整数k,表示有 k个待安排的活动。 接下来的 k行中,每行有 2个正整数,分别表示 k个待安排的活动开始时间和结束时间。时间 以 0 点开始的 阅读详情
/*
 * 第七章 贪心法
 * 活动安排
 * */
#include <iostream>

using namespace std;

void GreedySelect(int n, int s[], int f[], bool ch[]) {
    int i, j;
    ch[1] = true;
    j = 1;
    for (i = 2; i <= n; ++i) {
        if (s[i] >= f[j]) {
            ch[i] = true;
            j = i;
        } else
            ch[i] = false;

    }
}

int main() {

    int n = 11;// 活动数
    int s[] = {0, 1, 3, 0, 5, 3, 5, 6, 8, 8, 2, 12};// 活动开始时间集合
    int f[] = {0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};// 活动结束时间集合
    bool ch[11];
    /*输出各活动时间区间*/
    cout << "->各活动时间区间:" << endl;
    for (int i = 1; i <= n; ++i) {
        cout << i << ": " << s[i] << "~" << f[i] << endl;
    }
    GreedySelect(n, s, f, ch);
    /*输出活动安排*/
    cout << "++++++++++++++++++++++" << endl
         << "->活动安排:" << endl;
    for (int j = 1; j <= n; ++j) {
        if (ch[j])
            cout << j << ": " << s[j] << "~" << f[j] << endl;
    }


}
第七周学习任务:贪心法 算法编程题: 活动安排问题 最优装载问题 会场安排问题 汽车加油问题 最优合并问题 阅读详情

相关推荐

基于ENVI5.3的Landsat条带去除、辐射定标、大气校正

基于ENVI5.3的Landsat条带去除、辐射定标、大气校正坏带修复辐射定标大气校正 坏带修复 1.下载landsat_gapfill插件,放入“安装目录\Exelis\ENVI53\extensions”,重启ENVI 2. 加载拟处理文件(MTL.txt格式) 3.打开landsat_gapfill 4.选择存放位置并命名文件 5.选择处理文件 辐射定标 1.选择工具Radiometric Calibration 2.选择已修复坏带文件 3.修改参数,选择输出位置及命名文件 大气校正 1

u010198950的博客 1万+

活动安排问题

活动安排问题是可以利用贪心算法求解的经典案例,该问题要求尽可能多的利用某一公共资源,使尽可能多的活动用上公共资源。本次活动安排以会议安排为例,讲解如何在有限的时间内安排更多场次的会议。

m0_61286600的博客 2849

dummy机械臂代码学习(六)

CLI-Tool文件夹下又包含四个子文件夹,以及一个gitignore文件、一个run_shell.py的python文件、一个run.bat文件和一个zadig exe文件。库解析命令行参数,并根据不同的命令执行相应的操作。Zadig是一个用于Windows操作系统的开源工具,它的主要功能是安装和配置USB驱动程序。的目的呢就是确保在版本控制过程中,不必要的或自动生成的文件被忽略掉,来保持代码仓库的干净和整洁。,DummyStudio的软件作者已放在GitHub,我们主要看CLI-Tool文件夹就行。

jumaohhh的博客 1432

4-1 活动安排问题

我的理解:贪心算法是一种常用的问题求解方法,它在每个步骤上都选择当前看起来最优的解,而不考虑整体的最优解。简单来说,贪心算法采取局部最优的决策,希望通过每个局部最优解的选择,最终得到全局最优解。贪心算法的基本思想是通过贪心选择策略,一步一步地构建解决方案,每次选择都是基于当前情况下的最优决策。它通常适用于满足最优子结构的问题,即一个问题的最优解可以通过子问题的最优解来构建。然而,需要注意的是,贪心算法并不是适用于所有问题的通用解决方案。

tang7mj的博客 3246

Oracle集群管理-19.3升级19.18 opatchauto总结(java报错,resume oneoffs缺失目录)

t. (那个认为补丁已经打上了,但是oneoffs目录里面没有。将安装包文件的权限全部改成777.就继续执行了上述命令 ,此时使用opatch lsinv也是报错 ,在正常执行opatchauto apply。1 创建目录,存放补丁包,并赋予权限。于是使用如下命令对补丁进行回滚。

oradbm的博客 1415

如何在Ubuntu 22.04上为AlphaFold3配置NVIDIA A100 GPU(含驱动安装避坑指南)

本文提供了在Ubuntu 22.04系统上为AlphaFold3部署NVIDIA A100 GPU的完整安装教程。内容涵盖从系统环境准备、NVIDIA驱动安装与避坑指南,到Docker容器化部署、数据库获取以及最终构建运行AlphaFold3的详细步骤,旨在帮助研究者和开发者高效配置高性能计算环境,充分发挥A100的硬件潜力。

nft7creator的博客 468

算法设计与分析——活动安排问题(Java)

算法设计与分析——活动安排问题(Java) 算法设计与分析 贪心法求解活动安排问题的算法

qq_53709454的博客 3809

【Win10/11】Windows电脑WiFi显示小地球/断网的解决方法 Windows WiFi小地球、网络连接中断、网络重置、无线网卡驱动、Win10/Win11网络修复

最近经常有粉丝留言问我,Windows 电脑突然连不上 WiFi,右下角网络图标显示成了“小地球 🌐”,或者干脆提示“未连接 - 没有可用的连接”。明明其他设备网络都正常,唯独自己的电脑断了。作为在互联网大厂混迹多年的前端程序员,我自己也碰到过这个问题。总结几种比较常见、亲测有效的解决方法,写出来供大家参考,希望能帮你快速恢复上网!问题原因推荐解决方法系统设置错乱使用网络重置功能驱动异常或冲突卸载后重启自动安装驱动驱动版本过旧手动更新网卡驱动实在不行考虑使用系统还原点或重装系统这几个方法中,

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3850

计算机算法分析与设计(11)---贪心算法(活动安排问题和背包问题)

1. 贪心算法的定义:贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。2.注意:贪心算法对有些问题可以快速获得整体最优解。对有些问题虽不能得到整体最优解,却可以得到近似最优解。贪心选择性质:贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择来得到,即通过贪心选择来达到。最优子结构性质:一个问题的最优解包含其子问题的最优解。相同:贪心算法和动态规划算法都要求问题具有最优子结构性质。

m0_62881487的博客 7643

第23章:代码迁移——用AI将Vue2迁移到Vue3、将JS迁移到TS

> - 用AI自动将Vue2 Options API转为Vue3 Composition API的完整流程 > - 将JavaScript项目批量迁移到TypeScript,自动添加类型推导 > - 处理依赖冲突、破坏性变更和迁移后的验证方法 > - 一个完整的Vue2到Vue3迁移案例(含路由、状态管理) > - 我如何用AI将公司一个10万行代码的老项目从JS升级到TS

sfishfly的博客 208

Qt实现思维导图功能1『核心树』

利用Qt的QGraphicsView框架实现思维导图功能 百度网盘体验地址: 链接:https://pan.baidu.com/s/15x9F48agCDOQbsyH3VwVXA 提取码:8svh 注:UI风格参考博主:前行中的小猪,博文地址:https://blog.youkuaiyun.com/GoForwardToStep/article/details/124692790?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_u

浮生流年的博客 6163

算法分析与设计实验之 java实现贪心法解决活动安排问题

n},其中每个活动都要求使用同一资源,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi。如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的。也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。活动安排问题要求在所给的活动集合中选出最大的相容活动子集。(4)设有如下一组活动,编写算法和程序,从中选出最大的相容活动子集。

qq_62159107的博客 526

Vue3 - 超详细最新 wangEditor V5 富文本编辑器安装引入及使用教程,提供工具栏配置、基础富文本功能、API使用示例教程等(新手小白快速引入并植入到项目中)

vue3,wangEditorv5富文本编辑器,wangEditorv5官方文档,vue3最新安装wangEditorv5富文本详细使用教程,vue3使用wangEditorv5编辑器示例代码,vue3网站网页安装植入富文本编辑器教程,vue3wangEditor使用api,vue3安装富文本控制台出现报错如何解决,vue3wangEditor-v5工具栏配置,vue3中使用富文本编译器wangEditor5的方法,wangeditor5在vue3中的全使用过程,vue3超详细最新wangedi

🏆 前端领域优质创作者 4253

贪心法——活动安排问题

贪心法——活动安排问题 贪心法 贪心法的本质可以认为是动态规划在特定条件下的优化。贪心法满足两个性质,最优子结构性质和贪心选择性质。 满足最优子结构性质意味着问题可以被层层分解为子问题,这些子问题构成树状结构,意味着贪心算法可以求解的问题可以使用动态规划算法求解。对应到树状结构的话,就是从底向上求解,需要预先求出所有子问题的解以期求出父问题的解,这就意味着要遍历所有的从叶节点到根节点的路径。 贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的贪心选择来达到。满足贪心选择性质,意味着对于每个内节点处

qq_43513855的博客 2279

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。

m0_74202856的博客 1709

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

算法设计与分析:实验六 贪心法

该资源任何时刻只能被一个活动所占用,活动i有一个开始时间bi和结束时间ei(bi<ei),其执行时间为ei-bi,假设最早活动执行时间为0。先利用重载排序活动结束时间,使其依次递增排序,选结束时间最早的活动来占用资源,假设一个变量来记录前一个兼容活动的结束时间,记录结束时间最早的活动结束时间,下一步选择开始时间大于等于结束时间最早的活动的结束时间,使其开始时间变成选择的活动的结束时间,按照这个方法依次选择,直至排序后活动结束时间的最后一个活动,得出最大兼容活动的子集,即所有安排活动个数最多。

菜鸟的博客~ 1482

动态规划——活动安排问题II(C++)

Take it easy!

m0_73962294的博客 940

活动安排问题(贪心)

直观上,按这种策略选择相容活动可以为未安排的活动留下尽可能多的时间,也就是说,这种贪心选择的目的是使剩余时间段极大化,以便安排尽可能多的相容活动。但对于活动安排问题,贪心算法greedySelector却总能求得的整体最优解,即它最终所确定的相容活动集合A的规模最大。这样,贪心选择时取当前活动集合中结束时间最早的活动就归结为取当前活动集合中排在最前面的活动。贪心法求解活动安排问题的关键是如何选择贪心策略,使得按照一定的顺序选择相容活动并能够安排尽量多的活动。当输入的活动已按结束时间的非减序排列,算法只需。

weixin_43319980的博客 612

贪心算法解决问题(C语言)

贪心算法解决问题(C语言 )

呼啦啦啦啦啦的博客 2297

算法-贪心法

贪心法是把一个复杂问题分解为一系列较为简单的局部最优选择,每一步选择都是对当前解的一个扩展,直到获得问题的完整解。贪心法的典型应用是求解最优化问题,而且对许多问题都能得到整体最优解,即使不能得到整体最优解,通常也是最优解的很好近似。 概述 贪心法的设计思路 贪心法目光短浅,并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优,这种局部最优选择并不总能获得整体最优解,但通常能获得近似最优解。 用贪心法求解的问题一般有两个最重要的性质:最优子结构性质和贪心选择性质。 1)最优子结构性质:当一个问题的最

3923

算法思想之贪心法

贪心法的基本思想   贪心算法是利用问题的贪心性质,简化了分解原始问题的过程,每次只关注在当前状态下可以获得的局部最优解,通过凭借各阶段的局部最优解获得最终问题的解。 贪心法解决问题的条件 问题是否适用于贪心法求解,即索取求解问题是否具有贪心选择性质。 贪心选择性质是指应用同一规则,将原问题变为一个相似的但规模更小的子问题,而后的每一步都是当前看似最佳的选择。 问题是否具有局部最优解,从而通过一个贪心标准,可以得到问题的最优解。 应用贪心法的基本思路 建立对问题精确描述的数学模型,包括定义最优解的模型

qq_36271858的博客 730

【算法-贪心算法-1】

贪心法:把一个复杂问题分解为一系列较为简单的局部最优选择,每一步选择都是对当前解得一个扩展,直到获得问题的完整解。 通过一个问题来引入: 【货币兑付问题】 要求用最少的货币张数来支付现金。 给定的现金p是约束条件 最少的货币张数是目标函数 满足约束函数的向量称为问题的可行解 满足目标函数的向量称为问题的最优解 如何用贪心法来解这个问题呢? 计算问题的每一步都是作出当前看来最好的选择。 例:现金p为57.8元 先拿出1张50元,再拿出1张5元,再拿出2张一元,拿出1张五毛,1张两毛,一张1毛。 每一步都尽量拿

qq_45852341的博客 333

HNU数据结构与算法分析-作业7-算法设计技术

HNU数据结构与算法分析-作业7-算法设计技术 请先给出算法思路和递推式,再写伪代码,分析复杂度。

wolf的博客 1548

6.1 贪心法

6.1 贪心法 贪心法在紫书那里就学过了,就是将一个问题分割成若干个部分,然后在某些部分中采取对于当前部分或者进行到当前部分的整体最优的策略,知道所有的部分处理完全;在每一步的进行中都不考虑对后续步骤的影响,也不往回更改之前的策略。 如果只使用贪心法,贪心法的适用性并没有那么高,但如果将贪心法结合其他的暴力算法,往往能带来意想不到的结果(例如A*算法,最小生成树算法,Dijkstra算法)。 6.1.1 常见问题 黑书上是以最少硬币问题为例的,但事实上最少硬币问题,如果稍微改一下参数,就不一定能够通过贪心

weixin_55835175的博客 1082

有趣的算法

俄式乘法判断假币过桥问题找既不是最大也不是最小的元素找功能求解递推关系式 俄式乘法 和快速幂有点像 计算两个正整数n和m的乘积有一个很有名的算法称为俄式乘法,其思想是利用了一个规模是n的解和一个规模是n/2的解之间的关系:n×m=n/2×2m(当n是偶数),或:n×m=(n-1)/2×2m+m(当n是奇数),并以1×m作为算法结束的条件。据说19世纪的俄国农夫使用该算法并因此得名,这个算法也使得乘法的硬件实现速度非常快,因为只使用移位就可以完成二进制数的折半和加倍。 解:设计算法如下: 输入:两个乘数.

weixin_45564209的博客 3329
上一篇: [算法]分支界限法解决装载问题
下一篇: [算法]动态规划解决数塔问题
DamonChenLM
博客等级 码龄9年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值