會議安排最優演算法

來源:互聯網
上載者:User

標籤:blog   java   2014   os   art   javascript   

var arr = new Array(31,22,43,14,15,16,77,190,210,98,61,78,45,33,68,92,109,110);var morningArr = new Array();var afternoonArr = new Array();var morningLimit = 180;var afternoonLimit = 240;var days = 0;var tmpresult = new Array();var arrFactorResult = new Array();////========================Core====================function find_factor(sum, index,arr)   {    if(index < 0 || sum <= 0)        return;            if(sum == arr[index])    {          tmpresult.reverse();var tmpArr = new Array();        for(var i =0 ; i < tmpresult.length; i++){            tmpArr.push(tmpresult[i]);}        tmpArr.push(arr[index]);if(arrFactorResult.indexOf(tmpArr) < 0)arrFactorResult.push(tmpArr);        tmpresult.reverse();          }    tmpresult.push(arr[index]);    find_factor(sum-arr[index], index-1,arr);    tmpresult.pop();     find_factor(sum, index-1,arr);}function findCloseTo(n,arr,sessions){for(var i = n ;i>0; i--){tmpresult = new Array();arrFactorResult = new Array();find_factor(i,arr.length,arr);if(arrFactorResult.length > 0){break;}}return arrFactorResult;}////================================================////===============================================////step 1: find the elements can only put in afternoon , put in afternoon Arrfunction splitMorningAfternoon(){for(var i = 0 ;i<arr.length;){if(arr[i]>morningLimit && arr[i]<=afternoonLimit){afternoonArr.push(arr[i]);}else{morningArr.push(arr[i]);}arr.splice(i,1);}if(morningArr.length>0){//echoL("Morning Session : ");for(var i = 0;i<morningArr.length; i++){//echo(morningArr[i] + ",");}}if(afternoonArr.length){//echoL("After noon Session");for(var i = 0;i < afternoonArr.length;i++){//echo(afternoonArr[i] + ",");}}}////================================================////step 2: arrange morning session , if have not arranged , put in afternoon schedule function arrangeMorning(){echoL("day "+ ++days);var morningSessions = findCloseTo(morningLimit,morningArr);if(morningSessions.length > 0){echoL(" Morning Sessions :");for(var i = 0;i<morningSessions[0].length;i++){echo(morningSessions[0][i]+",");morningArr.splice(morningArr.indexOf(morningSessions[0][i]),1);}}//after morning arrangement , put rest items into afternoonif(morningArr.length > 0){//echoL("these sessions put to afternoon : ");for(var i = 0;i < morningArr.length;i++){afternoonArr.push(morningArr[i]);//echo(morningArr[i] + ",");}}}function arrangeAfternoon(){//start arrange afternoonvar afternoonSessions = findCloseTo(afternoonLimit,afternoonArr);if(afternoonSessions.length > 0){echoL(" Afternoon Sessions : ");for(var i = 0;i < afternoonSessions[0].length;i++){echo(afternoonSessions[0][i] + ",");afternoonArr.splice(afternoonArr.indexOf(afternoonSessions[0][i]),1);}}if(afternoonArr.length > 0){echoL("pending sessions : ");for(var i = 0;i<afternoonArr.length;i++)echo(afternoonArr[i] +",");}}function arrangeSession(){splitMorningAfternoon();arrangeMorning();arrangeAfternoon();if(afternoonArr.length > 0 ){arr = afternoonArr;morningArr = new Array();afternoonArr = new Array();arrangeSession();}}arrangeSession();////====================UTIL=========================function echo(msg){document.write(msg);}function echoL(msg){document.write("<br />" + msg + "<br />");}////=================================================

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.