活动安排问题2

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

import java.util.Arrays;
import java.util.Comparator;
public class C05_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());
		for (int i = 0; i < node.length; i++) {
			System.out.println(node[i].start+" "+node[i].end);
		}
		int res = 0;
		int cur=node[0].start;
		for (int i = 0; i < node.length; i++) {
			if(cur<=node[i].start){
				res++;
				cur = 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
	}
/*
1 3
3 4
0 7
3 8
5 10
6 12
4 14
10 15
15 18
15 20
*/	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值