zoukankan      html  css  js  c++  java
  • 安排会议(区间问题、贪心)

          关于区间问题还有我的另一篇博客https://blog.csdn.net/qq_34115899/article/details/79388870

    题目: 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给你每一个项目开始的时间和结束的时间(给你一个数组,里面是一个个具体的项目),你来安排宣讲的日程,要求会议室进行 的宣讲的场次最多。输出这个最多的宣讲场次。

    区间问题都是选用早结束为策略的,谁结束早就先做哪个宣讲。有人可能会想以先开始为贪心策略, 或者选用时间短的

    输入

    5
    1   3
    2   5
    4   7
    6   9
    8   10

    输出

    3

    import java.io.BufferedInputStream;
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Scanner;
    
    public class test {
    
        public static class Program {
            int start, end;
    
            public Program(int start, int end) {
                this.start = start;
                this.end = end;
            }
        }
    
        public static int bestArrange(Program[] p) {
            int ans = 0;
            Arrays.sort(p, new Comparator<Program>() { // 哪场会议结束时间早就排在前面
                public int compare(Program o1, Program o2) {
                    return o1.end - o2.end;
                }
            });
            int start = 0;
            for (int i = 0; i < p.length; ++i) {
               if (start <= p[i].start) {  // 端点不重合可以去掉等号
                   start = p[i].end; // 记录下一场能开始的时间
                   ++ans;
               }
            }
            return ans;
        }
    
        public static void main(String[] args) {
            Scanner cin = new Scanner(new BufferedInputStream(System.in));
            int n = cin.nextInt();
            Program[] p = new Program[n];
            for (int i = 0; i < n; ++i) {
                int start = cin.nextInt();
                int end = cin.nextInt();
                p[i] = new Program(start, end);
            }
            cin.close();
            System.out.println(bestArrange(p));
        }
    }
    ========================================Talk is cheap, show me the code=======================================
    CSDN博客地址:https://blog.csdn.net/qq_34115899
  • 相关阅读:
    用C#实现宽带重新拨号
    CALLBACK FUNCTION 回调函数
    编译程序 VS 解释程序
    《围城》读书笔记
    鼠标点击器
    工作与找工作的日子
    Windows 7下VS2003的查找无响应问题
    收藏几句关于程序的名言
    static知识小结
    如何定义和实现一个类的成员函数为回调函数(转)
  • 原文地址:https://www.cnblogs.com/lcy0515/p/9179781.html
Copyright © 2011-2022 走看看