栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-10-10

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-10

基于贪心算法的活动安排方案(含C++代码)

文章目录
  • 基于贪心算法的活动安排方案(含C++代码)
  • 一、问题描述
  • 二、思考
  • 三、代码展示
            • 代码:
            • 运行截图:
  • 总结


一、问题描述

假设某社团一天要组织n个活动E={1,2,3,…n},其中每个活动都要求使用同一礼堂,而且在同一时间内只有一个活动能使用这个礼堂。每个活动i都有一个要求使用礼堂的起始时间si和结束时间fi,且si

二、思考

由于题目要求在固定时间内安排尽可能多的相容活动,本文将其归类为基于贪心算法的区间相交问题。首先,将fi作为度量指标,由小到大对所有活动进行排序,在将每一个活动的si与其前一个活动的fi进行比较,如果小于,则不能相容,舍弃该活动;如果大于,则可以相容,保存该活动。最后即可得到一个活动安排方案,使得安排的相容活动数目最多。


三、代码展示 代码:
#include
using namespace std;
class process{
	public:
		int number;
		int start;
		int end;
};
int main(){
	int n;
	cout<<"请输入活动的个数:" ; 
	cin>>n;
	process a[n];
	for(int i=0;i>a[i].number;
		cin>>a[i].start;
		cin>>a[i].end;
	}
	//排序:将所有活动的结束时间按从小到大的顺序排列 
	process temp;
	for(int i=0;ia[j].end){
				temp=a[i];
				a[i]=a[j];
				a[j]=temp;
			}
		}
	}
	int count=1;
	int cur=0;
	for(int i=0;i 
运行截图: 


总结

这是算法老师上课出的题目,我借鉴了很多大佬对区间相交内容的理解(吼吼吼,就是代码),不知道有没有更好的方法,如果有的话希望大家可以和俺说说,如果有不对的地方,欢迎大家指正,十分感谢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/316901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号