会议安排最优算法

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 Arr
function 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 afternoon
if(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 afternoon
var 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 />");
}

////=================================================

会议安排最优算法

时间: 2024-09-29 19:02:48

会议安排最优算法的相关文章

ECNUOJ 2615 会议安排

会议安排 Time Limit:1000MS Memory Limit:65536KB Total Submit:451 Accepted:102 Description 科研人员与相关领域的国内外同行进行适时的接触与充分的交流,对于促进提高他们的科研业务水平,并及时掌握科研动态是十分必要而且重要的.ECNU为了走在科技的前沿,于是决定派遣一些学者出去参加会议.由于这些会议具有不同的级别,因此对于科研人员可能带来的科研上的促进作用也就可能不同.但是一个学者不能同时参加两个会议.而且,如果一个学者

Scrum中的站立会议

Scrum站立会议 站立会议给我的第一印象就是站着开会,在经过我查阅资料之后,发现也是差不多的意思.学术一点的分析就是在Sprint开始后,团队将会在每个工作日特定时间举行一个简短会议,每次会议大约15分钟,团队的每位成员都将参与.为了保证会议的简短明了,参会人员都保持站立. 以往的状态报告会议中,通常是经理念着一大堆任务的名称,依次询问每项任务的完成情况,大多数成员会觉得很厌恶.因为基本上跟自己相关的部分大约需要5分钟,另外需要10分钟了解新知识,而剩下的时间都是浪费.站立会议使会议形式从1对

移动会务与O2O会务谁能驰骋会议风云?

又临近年底了,不论是大公司还是小企业,会议也会越来越多.不过对于很多企业来说,年底大大小小的会议却是一件十分头疼的事情,很多企业都面临着开会上的难题:一方面需要面临开会前繁冗复杂的准备工作:另一方面企业领导还需要考虑开会所带来的效果,现场互动性如何等.于是,一些移动会务平台与O2O会务平台开始走上会议的舞台. 移动会务正在成为一种常态 过去传统的会务方式需要涉及人员接待.资料汇编等众多繁杂的事项,往往会导致会议中出现这样那样的错误.移动互联网的兴起,让很多企业都开始探寻新的会议方式,以蓝信为代表

【每日Scrum】第一天 7-magic Sprint1计划会议成果

[每日Scrum]第一天  7-magic Sprint1计划会议成果 ——小组成员:崔乐乐 黄肖飞 唐仙迪 赵玉璇   Sprint计划会议非常关键,应该算是Scrum中最重要的活动.要是它执行的不好,整个sprint甚至都会被毁掉. 举办Sprint计划会议,是也为了让团队获得足够的信息,能够在几个星期内不受干扰地工作,也是为了让产品负责人能对此有充分的信心. 为了让我们的产品能够顺利的降生,我们组进行了sprint1计划,主要是为了在先前评估的成果基础上,定出 Sprint 目标和既定产品

【管理心得之六十二】浅谈“项目状态会议”

场景再现 ================== 项目经理A: 最近和客户.团队成员每星期开一次状态会议,似乎遇到了问题. 我发现很难在两小时内把事先准备的会议议程表内容都过一遍. 项目经理B: 状态会议需要2个小时?时间不短呀. 说得详细点,你准备的议程表是什么样的? 项目经理A: 更新项目计划: 讨论前一次会议安排的任务及执行情况: 突出的问题和重大变更请求也会列入其中: 与会人还可以根据需要在议程表上添加其他小议题 等等. 项目经理B: 不错,这议程表没有问题,你觉得会议的问题出现在哪里?

高效会议管理技巧

[摘要] 会议的主要目的就是解决问题,但由于开会技巧不佳或过于频繁,不但无益于解决问题,反而使问题愈趋复杂.频繁的会议与主管层的随意决策,常常是员工的梦魇:员工花太多时间在无效率的会议上,不仅浪费公司成本,也造成工作效率低下.如何能在会议中高效率且有效果地解决问题,是大家长久以来的期望,那么我们通过本文窥豹一斑. [正文] 一   会议的意义 n 会议是一个集思广益的渠道 : 会议是一个集合的载体.通过会议使不同的人.不同的想法汇聚一堂,相互碰撞,从而产生"金点子".许多高水准的创意就

Skype for Business Server 2015系列(一)概述和准备工作

对于Lync,相信熟悉微软产品的小伙伴都比较了解了,作为微软旗下的即时通讯软件,面向企业用户,全球500强中的70%都在使用Lync.在今年4月份的时候,微软将 Lync 更名为 Skype for Business,作为 Office 2013 四月更新的一部分,正式开始推送.微软称Skype for Business将集合 Skype 和Lync的优势(如Skype界面熟悉感和Lync企业级功能)界面和图标更像Skype,提供了全新的客户端体验. 作为服务器端的Skype for Busin

【执行力决定命】第8集《时间管理,让工作和生活井井有条》

「音频原文」http://dwz.cn/6sB211 大家好,我是林琳笨,今天跟大家一起分享<时间管理,让工作和生活井井有条>,这个话题不但和工作有关系,也和生活关系也很大. 成功人士是事业有成,家庭照顾的很好,工作之余能陪家人过快乐的家庭生活,这不可能只是运气,也未必是他非常的努力,大部分原因是因为时间分配的很合理.所以有些企业基层及中层人员抱怨"我工作忙的连陪家里人的时间也没有了,家里人对我意见很大."这个时候需要反省,是不是自己在时间管理上出了问题. 所以说时间管理不

张书乐:360也想造车!红衣教主这是要搞事啊

玩无人驾驶,李彦宏上四环被交警查了-- 在PPT造车太久,结果成了贾跃亭离开乐视的最后一根稻草-- 专注造车好几年,苹果最终因为高层之间无法达成一致,缩水成了代驾(为其它整车厂商开发自动驾驶技术)-- 在互联网厂商几乎每一个大佬都掉进的"造车"坑里,似乎有将迎来一个搅局者--360. 文/张书乐(人民网.人民邮电报专栏作者) 新著有<微博运营完全自学手册> 8月25日15时47分,和汽车八竿子打不着的360安全卫士官方微博丢出来11个字.一张图. 话很简单:9.12   北