活动安排(贪心)
2017-11-08 19:15
169 查看
问题:有n个活动的集合A={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。
求解:安排尽量多项活动在该场地进行,即求A的最大相容子集。
分析:
1.对活动以结束时间增序排序,使剩余可安排时间最大化,以便安排更多的相容活动。
2.遍历排好序的活动,结束时间与下个活动的开始时间进行比较,不相容则继续遍历
求解:安排尽量多项活动在该场地进行,即求A的最大相容子集。
分析:
1.对活动以结束时间增序排序,使剩余可安排时间最大化,以便安排更多的相容活动。
2.遍历排好序的活动,结束时间与下个活动的开始时间进行比较,不相容则继续遍历
package 算法实验; import java.io.InputStream; import java.util.*; /** * 测试数据 11 1 4 3 5 0 6 5 7 3 8 5 9 6 10 8 11 8 12 12 14 2 13 */ class Arr implements Comparable<Arr>{ public int start; public int end; /** * 按结束时间递增排序 * @param o * @return */ @Override public int compareTo(Arr o) { // TODO Auto-generated method stub if (o.end > this.end) { return -1; } else if (o.end < this.end) { return 1; } else { return 0; } } } public class Test2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Arr[] arr = new Arr ; for (int i = 0; i < n; i++) { arr[i] = new Arr(); arr[i].start = sc.nextInt(); arr[i].end = sc.nextInt(); } sc.close(); Arrays.sort(arr); //保存结束时间,与下一个开始时间作比较 int flag = 0; for (int i = 0; i < n; i++) { if (flag <= arr[i].start) { flag = arr[i].end; System.out 4000 .println("start:" + arr[i].start + " end:" + arr[i].end); } } } }
相关文章推荐
- 贪心算法_活动安排问题
- [贪心]FJSDFZOJ 1133 活动安排问题
- 贪心算法-4.1活动安排问题
- 贪心算法 安排活动的问题 最大限度的利用有限资源
- [贪心入门]活动安排问题
- 线段重叠(活动安排)问题 贪心
- 贪心算法--活动安排
- 51nod 1428 活动安排问题 (贪心+优先队列)
- pzhu 1082: 活动安排问题 (贪心)
- 51nod 活动安排问题之二 (贪心+stl)
- 贪心算法-活动安排
- 贪心-活动安排问题
- 贪心算法-活动安排问题
- 贪心_两类活动安排问题
- 贪心策略 活动安排 会场安排
- 选择不相交区间(活动安排问题)(贪心)(HDU2037)
- HDU2037 活动安排 贪心
- 贪心算法--活动安排问题
- 雷达覆盖,贪心,类似活动安排(POJ1328)
- 活动安排问题 (贪心)