思路:标准贪心
先把所有思路列出来:
1.优先选择开始时间最早的,经分析,不可行
2.优先选择持续时间最短的,经分析,不可行
3.优先选择结束时间最早的,经分析,可行
然后根据第三种思路实现代码就好
实现思路:先将数据存在二维数组里,然后用冒泡排序结束时间升序排序,然后遍历一遍,选择时间能衔接得上的
source code:
package hduoj; import java.util.Scanner; public class hdoj_2037 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ int count = sc.nextInt(); if(count == 0) break; int[][] data = new int[count][2]; for(int i = 0;i<count;++i){ data[i][0] = sc.nextInt(); data[i][1] = sc.nextInt(); }//initialize bubble_2D_arr(data); int res = 0; int index = -1; for(int i = 0;i < data.length;++i){ if(data[i][0]>=index){ ++res; index = data[i][1]; } } System.out.println(res); } } private static void bubble_2D_arr(int[][] arr){ boolean flag = false; int len = arr.length;//get the line number for(int i = 0;i < len;++i){ for(int j = 1;j < len - i;++j){ if(arr[j-1][1] > arr[j][1]){ int temp1 = arr[j-1][0]; int temp2 = arr[j-1][1]; arr[j-1][0] = arr[j][0]; arr[j-1][1] = arr[j][1]; arr[j][0] = temp1; arr[j][1] = temp2; flag = true; } } if(!flag) break;//indicates the seq isn‘t change ever before } } }
代码已经ac
希望对大家有所帮助
以上
原文地址:https://www.cnblogs.com/lavender-pansy/p/12253038.html
时间: 2024-11-05 22:05:37