活动调度(贪心)(C++语言)- 解题大致思路

活动调度(贪心)(C++语言)博客: 活动调度(贪心)(C++语言)-CSDN博客

这段代码是一个 C++ 程序,它用来解决一个与活动时间安排相关的问题。下面是代码的大致思路和工作流程:

1. **初始化和输入**:
   - 程序首先定义了一个常量 `m`,这里是为数组 `a` 和 `b` 提供足够大的空间。
   - `n` 是一个整数变量,用来存储活动的数量。
   - `a` 和 `b` 是两个整型数组,用来分别存储每个活动的开始时间和结束时间。
   - 输入部分:程序读入活动的数量 `n`,然后读入每个活动的开始和结束时间,存储在数组 `a` 和 `b` 中。

2. **排序**:
   - 使用 `sort` 函数对数组 `a` 和 `b` 进行排序。数组 `a` 按照活动的开始时间排序,数组 `b` 按照活动的结束时间排序。
   - 这里用到了自定义的比较函数 `cmp`,它简单地按照数值的升序排序。

3. **计算重叠的活动数量**:
   - 程序的核心是找出在任何时刻同时进行的最大活动数量。
   - 使用两个指针 `i` 和 `j`,分别遍历数组 `a` 和 `b`。
   - 当 `a[i] < b[j]` 时,意味着有一个活动开始,计数器 `cal` 增加,并移动指针 `i`。
   - 当活动的开始时间和结束时间相等或者活动结束(`a[i] >= b[j]`),意味着一个活动结束,计数器 `cal` 减少,并移动指针 `j`。
   - 在每个步骤中,使用变量 `ans` 来记录并更新同时进行的最大活动数。

4. **输出结果**:
   - 最后,程序输出 `ans`,即在任何时刻同时进行的最大活动数量。

总的来说,这个程序是用来解决“最大重叠活动数量”问题的,即在一系列时间区间中找出任何时刻同时发生的最多活动数量。这是一个常见的贪心算法问题,经常出现在时间管理和资源分配等场景中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值