java贪心法求解活动安排问题
时间: 2023-10-11 11:21:34 浏览: 119
活动安排问题是指在一个可用资源有限的情况下,如何安排最多的活动,使得这些活动不会发生时间上的冲突。贪心算法可以用来解决这个问题。
具体的贪心策略是按照活动结束时间的先后顺序进行贪心选择。假设有n个活动,用f(i)来表示第i个活动结束的时间,那么按照f(i)的大小排序,然后依次选择结束时间最早且与前面已选活动不重叠的活动进行安排即可。
Java代码实现:
```java
import java.util.*;
class Activity implements Comparable<Activity> {
int start;
int end;
public Activity(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public int compareTo(Activity o) {
return this.end - o.end;
}
}
public class ActivitySelection {
public static int getMaxActivities(Activity[] activities) {
Arrays.sort(activities);
int count = 1;
int end = activities[0].end;
for (int i = 1; i < activities.length; i++) {
if (activities[i].start >= end) {
count++;
end = activities[i].end;
}
}
return count;
}
public static void main(String[] args) {
Activity[] activities = new Activity[] {
new Activity(1, 3),
new Activity(2, 4),
new Activity(3, 5),
new Activity(4, 6)
};
System.out.println(getMaxActivities(activities)); // 2
}
}
```
以上代码实现了一个简单的活动安排问题的贪心算法,时间复杂度为O(nlogn)。
阅读全文