美文网首页
活动安排问题

活动安排问题

作者: stoneyang94 | 来源:发表于2018-08-02 23:43 被阅读0次

题目(算法课第八课)

一些项目要占用一个会议室宣讲, 会议室不能同时容纳两个项目的宣讲。

给你每一个项目开始的时间和结束的时间(给你一个数组, 里面是一个个具体的项目),

你来安排宣讲的日程, 要求会议室进行 的宣讲的场次最多。

返回这个最多的宣讲场次。

分析

如果以开始时间早来贪心

反例:

a-----------------------------------------------------

  b----  c---  d--------    e----------      f -----

如果以持续时间短来贪心

反例:

a----------------------------          b---------------------------

                           c--------------- 

代码解决

用最早结束时间做贪心。

import java.util.Arrays;
import java.util.Comparator;

public class BestArrange {
    public static class Node{
        public int start;
        public int end;
        public Node(int start,int end){
            this.start = start;
            this.end = end;
        }
    }

    public static int bestArray(Node[]node){
        if(node==null || node.length==0){
            return 0;
        }
        Arrays.sort(node,new endComparator()); // 哪场会议结束时间早就排在前面
        int res = 0;
        int cur=node[0].start;//当前时刻
        for (int i = 0; i < node.length; i++) {
            if(cur<=node[i].start){//if没中的项目就是被淘汰的
                res++;
                cur = node[i].end;// 记录下一场能开始的时间
                System.out.println("做第"+(i+1) +"个项目。开始时间:"+node[i].start+",结束时间: "+node[i].end);
            }
        }
        return res;
    }
    
    public static class endComparator implements Comparator<Node>{
        @Override
        public int compare(Node o1, Node o2) {
            return o1.end-o2.end;
        }
    }
    
    public static void main(String[] args) {
        Node node[] = new Node[10];
        node[0] = new Node(1, 3);
        node[1] = new Node(0, 7);
        node[2] = new Node(15, 20);
        node[3] = new Node(3, 4);
        node[4] = new Node(3, 8);
        node[5] = new Node(5, 10);
        node[6] = new Node(6, 12);
        node[7] = new Node(4, 14);
        node[8] = new Node(10, 15);
        node[9] = new Node(15, 18);
        System.out.println("总共做了"+bestArray(node)+"个项目");//5
    }
}
测试输出

相关文章

  • 活动安排问题

    题目(算法课第八课) 一些项目要占用一个会议室宣讲, 会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间...

  • 贪心算法——活动安排问题

    设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动...

  • 贪心算法-活动安排问题

  • 贪心算法 活动安排问题

    问你如何用一个教室安排尽量多的活动?链接按结束时间排序活动,然后尝试安排即可 问你至少需要几个教室才能安排全部的活...

  • 活动安排

    啦啦啦小J 本周工地游学海报,7.10~7.11工地游学海报,茶话会海报,7.29~8.2日海报,截止日期: 6....

  • 活动安排

    4月9日(星期二)上午9:00在大渡口轻轨站园丁小区出入口集中,太极队、舞蹈队参加“区教委健步行”活动。 4月10...

  • 活动安排

    4月10日(星期三)上午9:30~11:30,在学校明德楼一层健身音乐教室进行唱歌活动。 特此通知: 重庆95中退...

  • 活动安排

    一、5月21日(星期二)上午9:30~11:00在学校体育馆开展太极养生活动。 二、5月22日(星期三)上午9:3...

  • 活动安排

    一、5月14日(星期二)上午9:30~11:00在学校体育馆开展太极拳活动。 二、5月15日(星期三)上午9:30...

  • 活动安排

    一、5月28日(星期二)上午9:30~11:00在学校体育馆开展太极养生活动。 二、5月29日(星期三)上午9:3...

网友评论

      本文标题:活动安排问题

      本文链接:https://www.haomeiwen.com/subject/tqfqpftx.html