码迷,mamicode.com
首页 > 编程语言 > 详细

贪心算法

时间:2020-03-31 18:46:56      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:logs   short   局部最优   span   rtc   char   doctype   在线编辑   type   

Markdown在线编辑器 - www.MdEditor.com

4 兼容任务 (100)

有n个任务,其中每个任务有一个起始时间si和一个结束时间ei,且si<ei,同一时间只能完成一个任务。如果选择了任务i ,则它在时间区间 [si ,ei) 内占用资源。若区间 [si ,ei) 与区间 [sj, ej)不相交,则称任务 i 与任务 j 是相容的。那么,对于给定的任务时间区间,能互相兼容的最大任务个数是多少呢?

输入格式:

第一行一个整数n (1<=n<=1000) ;
接下来n行,每行两个整数si 和 ei。

输出格式:

互相兼容的最大任务个数。

输入样例:

4
1 3
4 6
2 5
1 7

输出样例:

2

Accepted

#include<stdio.h>
struct task{
	int a;
	int b;
};
int main(){
	int x,sum=1;
	scanf("%d",&x);
	struct task n[x],c;
	for(int i=0;i<x;i++){
		scanf("%d %d",&n[i].a,&n[i].b);
	}
	for(int i=0;i<x-1;i++){
		for(int j=i+1;j<x;j++){
			if(n[i].b>n[j].b)
			{
				c=n[i];
				n[i]=n[j];
				n[j]=c;
			}
		}
	}
	for(int i=1;i<x;i++){
		if(n[0].b<=n[i].a){
			sum+=1;
			n[0].b=n[i].b;
		}
	}
	printf("%d",sum);
	return 0;
}

这道题的算法用贪心算法(贪心算法的基本思路是从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一步都要确保能获得局部最优解。每一步只考虑一个数据,他的选取应该满足局部优化的条件。若下一个数据和部分最优解连在一起不再是可行解时,就不把该数据添加到部分解中,直到把所有数据枚举完,或者不能再添加算法停止)。
大佬解释:

Markdown在线编辑器 - www.MdEditor.com

贪心算法

贪心算法

标签:logs   short   局部最优   span   rtc   char   doctype   在线编辑   type   

原文地址:https://www.cnblogs.com/czl411/p/12605835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!