贪心--会场安排问题

 
package greed;
public class Room {
	
	public static void sort(int begin[],int end[],int n)
	{
		for(int i=0;i<n;i++)
			for(int j=0;j<n-i-1;j++)
			{
				if(end[j]>=end[j+1])
				{
					int tmpbegin,tmpend;
					tmpbegin = begin[j];
					begin[j] = begin[j+1];
					begin[j+1] = tmpbegin;
					tmpend = end[j];
					end[j] = end[j+1];
					end[j+1] = tmpend;
				}
			}
	}
	public static int[] greedSelect(int begin[],int end[],int n)
	{
		int flag[] = new int[n];
		int pre = 1;flag[0] = 1;
		for(int i=1;i<n;i++)
			if(begin[i]>=end[pre])
				flag[i] = 1;
		return flag;
	}
	public static void displayArray(int begin[],int end[],int n)
	{
		for(int i=0;i<n;i++)
			System.out.println(begin[i]+"--"+end[i]);
	}
	public static void showResult(int begin[],int end[],int a[])
	{
		for(int i=0;i<a.length;i++)
			if(a[i]==1)
				System.out.println(begin[i]+"--"+end[i]);
	}
	public static void main(String args[])
	{
		int begin[] = {2,4,1,3,5};
		int end[] = {4,5,3,6,7};
		sort(begin,end,5);
		int result[] = greedSelect(begin,end,5); 
		showResult(begin, end, result);	
	}
}

/*
 * 
 * 			会场安排问题:
 * 		这是一个典型的 贪心算法
 * 		
 * 		begin[] 数据表示的是会议的开始时间
 * 		end[] 表示的是结束时间
 * 		1.首先根据会议的结束时间进行排序,sort 方法是将其排序,而且使它们的开始时间与结束时间在排序过后还是保持一致
 * 		2.然后根据排序后的顺序,先取出第一个结束的会议,这个会议一会是最先被安排,然后遍历其他时间,找出与前面已经安排的会议的时间相容(就是不冲突=后面会议的开始时间大于等于前面会议的结束时间)
 * 		3.然后再根据这种方法再找出其他会议
 * 
 * 
 * */

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值