贪心算法-活动安排问题
具体求解思路:
首先将活动按照结束时间从小到大排序,
然后将startTime[i]大于finishTime[i-1]的活动安排进去,
由于活动结束时间是事前排好序的(具体排序方法可以看我之前的博客),所以按照此方法,安排的活动相对于来说总是先结束的,这样来说就可以尽量最大化的利用资源。
相关的代码:
public class ActivityPlan {
public static int greedySelector (int []s,int []f,boolean []a){
int n=s.length-1;
a[1]=true;
int j=1;
int count=1;
for(int i=2;i<=n;i++){
if(s[i]>=f[j])
{ a[i]=true;
j=i;
count++;
}else a[i]=false;
}
return count;
}
public static void main(String args[]){
int s[] = {1,3,0,5,3,5,6,8,8,2,12};
int f[] = {4,5,6,7,8,9,10,11,12,13,14};
boolean []b=new boolean[s.length+1];
System.out.print(greedySelector(s,f,b));
}
}