假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法来进行安排。试编程实现对于给定的k个待安排活动,计算使用的最少会场。输入数据中,第一行是k的值,接下来的k行中,每行有2个正整数,分别表示k个待安排活动的开始时间和结束时间,时间以0点开始的分钟计。输出为最少的会场数。 输入数据示例 5 1 23 12 28 25 35 27 80 36 50 输出数据 3 写出java代码
时间: 2023-07-16 21:16:15 浏览: 48
```
import java.util.*;
public class ActivitySelection {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt(); // 待安排的活动数量
int[][] activities = new int[n][2]; // 存储每个活动的开始时间和结束时间
for (int i = 0; i < n; i++) {
activities[i][0] = input.nextInt(); // 开始时间
activities[i][1] = input.nextInt(); // 结束时间
}
// 按结束时间从小到大排序
Arrays.sort(activities, new Comparator<int[]>() {
@Override
public int compare(int[] a, int[] b) {
return a[1] - b[1];
}
});
int count = 1; // 记录使用的会场数,默认为1
int endTime = activities[0][1]; // 记录当前使用会场的最后时间
for (int i = 1; i < n; i++) {
if (activities[i][0] >= endTime) { // 如果当前活动的开始时间晚于当前使用会场的最后时间
count++; // 使用新的会场
endTime = activities[i][1]; // 更新当前使用会场的最后时间
}
}
System.out.println(count);
}
}
```