貪心–會場安排問題

來源:互聯網
上載者:User

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.