• 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);
        }
    }
}