贪心算法应用及设计,活动安排的问题

1、活动安排问题。
问题:有n个活动的集合A={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。
求解:安排尽量多项活动在该场地进行,即求A的最大相容子集。
设待安排的11个活动的开始时间和结束时间按结束时间的升序排列如下:
在这里插入图片描述
将此表数据作为实现该算法的测试数据。
(1)给出算法基本思想;
(2)给出用C/C++或java语言实现程序的代码;
(3)分析运行结果
(1)算法的基本思想是这些活动不能在同一时间举办,这些活动互不干扰的关系,所以要想实现安排尽量多项活动在该场地行因该采用最早结束原则。
(2)package suanfafenxiyusheji;
public class Exa1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int []s= {1,3,0,5,3,5,6,8,8,2,1,2};
int []f= {4,5,6,7,8,9,10,11,12,13,14};
greedy g=new greedy();
boolean []a=new boolean[s.length];
int count=g.greedy(s, f, a);
System.out.println(“最多安排”+count+“个活动”);
for(int i=0;i<s.length;i++) {
System.out.print((i+1)+"."+a[i]+"");
}
}

}
class greedy{
int greedy(int[] s,int[] f,boolean[] a) {
a[0]=true;
int n=s.length;
int j=1,count=1;
for(int i=1;i<=s.length-1;i++) {
if(s[i]>s[j]) {
a[i]=true;
j=i;
count++;
}
else{
a[i]=false;
}
}
return count;
}
}
(3)
在这里插入图片描述

发布了17 篇原创文章 · 获赞 10 · 访问量 760

猜你喜欢

转载自blog.csdn.net/qq_44772414/article/details/104656589