请教一个考场排座的问题

chenguang79 2014-06-12 09:12:28
现在有10个学校,每个学校的学生人数不同,进行考场排座,每个考场30人,按7,8,8,7进行排。前后左右,不是同一个学校的学生,有什么好的算法或是方法吗
...全文
4569 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
感觉这是个组合数学的问题
淡淡的活着 2014-06-13
  • 打赏
  • 举报
回复
引用 26 楼 just_for_download1 的回复:
歪个题外话: CSDN的下载分,除了上传资源给个别人下载,还有啥方法获得没?
可用分换10:1
just_for_download1 2014-06-13
  • 打赏
  • 举报
回复
引用 27 楼 lw_881020 的回复:
21楼最后排出来的队伍必须是7878的,不然左右同桌可能是同一个学校..... 必须在方法中加入一个判断,每排到能整除15的数时,换组排。比如开始从GA开始排的,这时候从GB开始排。
恩,我那里描述不够准确, 图画的是对的,是按照7887画的。自己在程序里面控制下就可以。多谢提醒。
just_for_download1 2014-06-13
  • 打赏
  • 举报
回复
引用 27 楼 lw_881020 的回复:
21楼最后排出来的队伍必须是7878的,不然左右同桌可能是同一个学校..... 必须在方法中加入一个判断,每排到能整除15的数时,换组排。比如开始从GA开始排的,这时候从GB开始排。
???
lw_881020 2014-06-13
  • 打赏
  • 举报
回复
21楼最后排出来的队伍必须是7878的,不然左右同桌可能是同一个学校..... 必须在方法中加入一个判断,每排到能整除15的数时,换组排。比如开始从GA开始排的,这时候从GB开始排。
just_for_download1 2014-06-13
  • 打赏
  • 举报
回复
歪个题外话: CSDN的下载分,除了上传资源给个别人下载,还有啥方法获得没?
changjiangzhibin 2014-06-13
  • 打赏
  • 举报
回复
21楼的Good --
於黾 2014-06-13
  • 打赏
  • 举报
回复
引用 18 楼 jiangsuwx 的回复:
应该先把学校人数最多的排好,其他学校的依次的插空进去
头像很耀眼. 21楼的方法不错.
大鹏灬 2014-06-13
  • 打赏
  • 举报
回复
继续学习中
just_for_download1 2014-06-13
  • 打赏
  • 举报
回复
当然上面有一点点细节说的不够完美: M2+M3+M4+...+M10 = MB , 设 M1 - (M2+M3+M4+....+M10 ) = N ,对于GA和GB中的前MB个学生,是轮流抽取的,剩下的N个学生,也许有小部分可以安排在前面一个教室,以为前面一个教室可能没坐满。当然这种小细节处理,也是很容易做到的。
just_for_download1 2014-06-13
  • 打赏
  • 举报
回复
楼主的这个问题有点意思,跟群里的朋友讨论了下,有很好的解决办法。

先看楼主问题,如下图所示:


解决思路:
1.对于一个考场教室而言,按照座位号的奇偶分为A,B两组,奇数号为A组,记为GA, 偶数号为B组(红色选中的),记为GB。 如下图所示:


2.假设10个学校的人数分别为M1,M2,M3...M10, 将他们按照人数递减来排序(为下文描述简单,假设他们现在已经是降序排列的了,即M1>=M2>=M3.....>=M10)。

3.将10个学校分别划分到组GA 和 组GB中,使得GA和GB两组中的总人数尽可能的接近。(网上这种算法很多)

4.假设经过步骤3之后,组GA和组GB中包含的学校分别为:
GA=M1+ M4 + M6 + M9 + M10
GB = M2+M3 +M5+M7+M8

5.在编排座位的时候,按照先从GA,再从GB,再从GA,再从GB。。。。这种轮流方式每次抽1个人的方式编排即可。


6.好了,上面就是算法的整体思路,完全可以解决楼主的问题。下面我们就来分析当学校人数分布处于临界的情况下的情景:

(1)学校人数最多的M1,也没有超过其他9个学校的人数之和,即人数最多的学校也没有超过整体的一半,即M1<=M2+M3+M4....+M10, 很显然 这种情况下,按照GA,GB分组方式, 是完全可以做到同一学校学生不相邻的;

(2)学校人数最多的M1超过整体的一半,即M1 > M2+M3+M4+...+M10 。这个时候,很明显, GA组只包含M1, GB组包含M2到M10 。 记M2+M3+M4+...+M10 = MB , 设 M1 - (M2+M3+M4+....+M10 ) = N ,即M1 - MB = N。这个时候该如何处理呢??
在编排座位的时候,还是按照轮流从GA,GB抽取的方式,那么最后GA组剩余N个学生,都是一个学校的,GB组为空。
如果N<=15 , 则将这N个学生安排在一个新的教室,只安排在奇数号座位即可,偶数号空着(GB组为空)。
如果N>15, 则将这N个学生安排在(N/15向上取整)个教室,同样,每个教室15个人,只安排在奇数号座位,偶数号空着(GB组为空)。

由此可见,即使在这些极端情况下,上面的算法模型一样能够解决问题。
md5e 2014-06-12
  • 打赏
  • 举报
回复
引用 6 楼 chenguang79 的回复:
有没有什么方法,能相对平均一点呢
那就留空咧,只不过资源分配上可能会消耗过多,只要保证在8~10的排法就可以了,所以要根据各校的人数,才能权衡用8\9\10哪个方案
chenguang79 2014-06-12
  • 打赏
  • 举报
回复
没看明白啊.........................
bwangel 2014-06-12
  • 打赏
  • 举报
回复
先用随机排序把每个学校的学生顺序打乱(这很easy)。形成10个队列。前5个学校一组,后5个学校一组。 如果学校人数不齐,就把多的那5个学校一组的分到少的那一组。前一组和后一组分到不同的考场。 然后 按7个那一列排, 分别取1,2,3,4,5 1 2队列的第一个学生。移出队列,放到座位上。 按8个那一列排,分别取 3,4,5,1,2,3,4,5队列的剩下的第一个学生。 再按8个排骨取, 1,2,3,4,5,6,7,1 再按7个排,取 2,3,4,5,1,2,3
chenguang79 2014-06-12
  • 打赏
  • 举报
回复
有没有什么方法,能相对平均一点呢
chenguang79 2014-06-12
  • 打赏
  • 举报
回复
关键就在这里啊。每个学校的人数不定,这样到最后,人数多学校,就会省下,如果一个学校的人多,就会全省下一个学校的了
md5e 2014-06-12
  • 打赏
  • 举报
回复
那第个学校的人数是多少呢? 一般按1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10来排的话是没有问题的,就是最后几个考场会因为学生人数的关系有所调整
chenguang79 2014-06-12
  • 打赏
  • 举报
回复
就是左右两列7人,中间两列8人
chenguang79 2014-06-12
  • 打赏
  • 举报
回复
就是现在中小学考试的,7,8,8,7
md5e 2014-06-12
  • 打赏
  • 举报
回复
首先要知道考场是几行几列,才能得到前后左右
加载更多回复(10)
秘书智能排座软件 V1.2 版本于2011年9月16日正式发布。软件程序升级后,增加和修复了一些功能,放宽了一些限制,运行效率和执行效率更高,系统更加安全可靠。 办文、办会、办事既是办公室日常工作的重要组成部分,也是办公室履行职能的重要手段。 在办公室工作的同仁,每天都会举办、组织、参与、协调各级各类会议。召开会议就涉及到参加会议人员的排座问题,就餐问题,还有会议代表集体合影留念问题。 一般情况下,我们要事先排定与会或就餐者的座次,但目前的座次表全凭工作人员手工制作,工作繁琐,容易出错。参会人员临时因故不能参会或增加人员,这种情况在会议开始头一天甚至会前经常发生,工作人员就需要在已经编排好的Excel表格中再插入或删除人员的姓名,轮番的“复制、粘贴”。如果参会人员多,往往错一个人,就需要一两个小时,甚至半天时间才能修改完成,有的甚至来不及修改座次表。 在办公室十几年经常从事这种机械重复而又繁琐无味的工作,使我们萌生了开发一种智能软件,把我们已经形成并普遍接受的规矩通过计算机程序来完成。 我们基于GIS基础地理信息系统平台,采用VC6+GDI的模式,来实现会场和会标自定义、会议座位区域自定义、就座列排多少自定义、就餐接待主题自定义、表格宽窄餐桌大小自定义、姓名横竖排列自定义、姓名字号大小自定义、过道多少和宽窄自定义、排列优先级自定义、列号排号自定义、备注和页码自定义、正反排列自由选择、A3A416开纸张自由选择(需根据计算机配备打印机的要求)、纸张横排竖排自主选择、个体群体排列自由选择、座次排列全部自动生成、参会人员、就餐人员和照相人员座次自动生成等等,能将几个小时的手工操作缩短为几秒钟,极大地减轻办公室秘书和会务人员的劳动强度和劳动量,有效提高工作效率,表现出不凡的作用和优越的性能。 目前一般使用的软件只是把名单通过程序导入到Excel表中,然后人工进行添加内容并修改完善。而秘书智能排座软件不同于这种Excel制表,您可以直观地将表格任意移动、修改、调整、设置,其科学性、灵活性、实用性都是其他同类软件无法比拟的。 秘书智能排座软件现有16种基本排列方法,交叉使用可延伸出更多的排列方法,只要是目前我们会议需要的,都可以通过秘书智能排座软件来实现。 秘书智能排座软件:轻轻一点帮您解决会议、照相、宴会、考试座位排列、座次安排的全部问题。 会务精灵,秘书必备,快乐工作,白领时尚。 会议考试,宴会照相,只需一点,轻松给力。 《秘书智能排座位软件 V1.2 版本正式发布》一文转载自〖秘书工作〗网站,版权属于原作者,转载请注明出处。文章地址:http://www.msgz.org/Article/Class71/17537.html

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧