活动安排|贪心
2026-04-05 16:07:23
发布于:河北
1阅读
0回复
0点赞
废话少说,上代码
#include<iostream>
#include<algorithm>
using namespace std;
// 定义活动结构体,包含开始时间和结束时间
struct activitys{
int s; // 开始时间
int t; // 结束时间
}a[1001];
// 比较函数,按结束时间升序排序
bool cmp(activitys a,activitys b){
return a.t<b.t;
}
int main(){
// 提高输入输出效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n=0,cnt=1,last=0; // n为活动数量,cnt为选中活动计数,last为上一个选中活动的结束时间
cin>>n;
// 输入n个活动的开始和结束时间
for(int i=0;i<n;++i)
cin>>a[i].s>>a[i].t;
// 按结束时间排序
sort(a,a+n,cmp);
// 选择第一个活动
last=a[0].t;
// 贪心算法:遍历所有活动,选择与已选活动不冲突的活动
for(int i=0;i<n;++i){
if(a[i].s>=last){ // 如果当前活动的开始时间大于等于上一个活动的结束时间
last=a[i].t; // 更新结束时间为当前活动的结束时间
cnt++; // 增加选中活动数量
}
}
cout<<cnt; // 输出最多能安排的活动数量
return 0;
}
这里空空如也








有帮助,赞一个