随笔记录
算法-贪心-会议安排问题
2022-4-18 diaba
package com.jiucaiyuan.net.question;

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

/**
* <pre>
* 贪心算法
* 在某一个标准下,优先考虑最满足标准的样本,最后考虑最不满足标准的样本,
* 最终得到一个答案的算法,叫做贪心算法
* 也就是说,不从整体最优上加以考虑,所做出的是在某种意义上的局部最优解
*
* 实例题:会议问题
* 问题内容:一些项目要占用会议室宣讲,会议室不能同时容纳两个项目同时宣讲。
* 给你每个项目的开始时间和结束时间(给你一个数组,里面是一个个具体的项目),
* 你来安排宣讲的日程,要求会议室进行宣讲的场次最多。
* 返回这个最多的宣讲场次。
*
* 贪心:会议结束的时间早的先安排,安排一个后,把不能安排的剔除掉,这个会议结束后,再找会议结束早的,一次类推
* </pre>
*
* @Author jiucaiyuan 2022/4/18 23:36
* @mail services@jiucaiyuan.net
*/

public class BestArrangeMeeting {
public static class Program{
public int start;
public int end;
public Program(int start,int end){
this.start = start;
this.end = end;
}
}
public static class ProgramComparator implements Comparator<Program>{

@Override
public int compare(Program o1, Program o2) {
return o1.end - o2.end;
}
}

/**
*
* @param programs 一堆项目
* @param timePoint 会议室可用的开始时间点
* @return
*/
public static int bestArrange(Program[] programs,int timePoint){
Arrays.sort(programs,new ProgramComparator());
int result = 0;
for(int i=0;i<programs.length;i++){
if(timePoint <= programs[i].start){
result++;
timePoint = programs[i].end;
}
}
return result;
}

public static void main(String[] args) {

}
}
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容