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.然後再根據這種方法再找出其他會議
*
*
* */