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