
- https:// blog.csdn.net/CuriousLiu/article/details/81175831 附上其他的人解释 虽然看完还是有点不懂 有点烧脑 出去吃个饭就到怎么解了
- 第一步 先按结束时间早的进行排序 结束早的在前面
- 第二步 重头开始选 选结束时间早的 这样接下面 结合下一部电影的开始时间结束时间 继续选 结束时间早的 重头开始选 肯定选结束时间早的 因为这样才是最有解
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int num = sc.nextInt();
if (num == 0) {
return;
}
int[][] arr = new int[num][2];
for (int i = 0; i < num; i++) {
arr[i][0] = sc.nextInt();// 开始
arr[i][1] = sc.nextInt();// 结束时间
}
int temp0 = 0;
int temp1 = 0;
for (int i = 0; i < num; i++) {//进行排序
for (int x = 0; x < num; x++) {
if (arr[i][1] < arr[x][1]) {
temp0 = arr[i][0];
temp1 = arr[i][1];
arr[i][0] = arr[x][0];
arr[i][1] = arr[x][1];
arr[x][0] = temp0;
arr[x][1] = temp1;
}
}
}
int count = 0;
int flagx = 0;
for(int i = 0 ;i < num ;i++) {//从头到尾遍历一遍
if(flagx <= arr[i][0]) {
flagx = arr[i][1];
count++;
}
}
System.out.println(count);
}
}
}