算法考试专项复习笔记2(贪心和递归)

本文主要探讨了贪心算法在活动安排问题和加油问题中的应用,首先按活动的结束时间对它们进行排序,然后依次选择不冲突的活动。接着介绍了递归算法在解决棋盘覆盖问题上的策略。此外,还提到了二分搜索这一重要的递归技术。
摘要由CSDN通过智能技术生成

贪心算法

活动安排问题

设有n个活动的集合E={1,2,3,…,n},所有的活动要求使用同一资源,而在同一时间内只有一个活动能使用这一资源,每个活动都有使用这一资源的开始时间si和结束时间fi,且si<fi。目标:要在所给的活动中,找出最大的相容的活动子集合。
贪心策略:先按右端点从小到大排序,再按左端点从小到大。

#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
typedef struct Node{
   
	int begin, end;
}Node;
Node a[N];
//比较,按照结束时间从小到大排序
int cmp(Node a, Node b){
   
	return a.end < b.end;
}
int main()
{
   
	int n;
	scanf_s("%d", &n);
	for (int i = 0; i < n; i++)
		scanf_s("%d%d", &a[i].begin, &a[i].end);
	//函数
	sort(a, a + n, cmp);
	int ans = 1;
	int end = a[0].end;
	for (int i = 1; i < n; i++){
   
		if (end < a[i].begin){
   
			end = a[i].end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值