首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
其他数据库开发
VFP
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
恭喜 dkfdtf 升为本版版主,特来提个问题^_^,有点复杂。
[已结贴,结贴人:cqnucsmoon]
加为好友
发送私信
在线聊天
cqnucsmoon
等级:
发表于:
2008-05-17 15:49:00
楼主
我有个排考场的问题。假如有N个单位的考生参加考试(每个单位的考生数不等,可能1个,也可能几百个),分别在安排在M个教室里面,每个教室安排30个考生。
现在要求:以最小拆分数单位数来安排这些考生的座位。
解释下要求:比如某个单位有25个人,另一个单位有5个人,则将这两个单位的人放在一起,尽量不拆分(除非不得不拆分);再如有的单位有140个人,则要求把140个必须排在相邻的教室中(相邻指教室编号),占了5个教室,但最前或最后一个教室还得补10个人才行,这10个人可以多个单位组合,也可以用另外大于10人的单位放进来。
1.拆分单位数最少;
2.相同情况下,以单位ID小的优先。
不知道应该怎么解?谢谢!
问题点数:
20
回复次数:
4
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
apple_8180
十豆三
等级:
发表于:
2008-05-17 16:38:26
1
楼 得分:
10
尽量不拆分
例:
单位A 25人
单位B 6人
单位C 5人
这样应该把单位A和单位C排在一起,符合你的条件1。
所以,每次排时,先按单位ID排序,然后事从第一个单位排起,排到此单位最后一个考场时,人数不足,差几个人设为X,
Select * from 表名 where 人数 <=x order by 人数 Desc,单位ID
也就说按小于等于X降序排,相同时取最小单位ID,符合你的条件1和条件2。
这时得到的表,取第一条记录,就是要排在第一个单位最后一个考场的单位。
以下以此类推,循环即可。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cqnucsmoon
等级:
发表于:
2008-05-17 21:27:26
2
楼 得分:
0
谢谢您:十豆三,我先准备些数据,测试下您的思路,然后再回来请教您。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
dkfdtf
等级:
发表于:
2008-05-17 21:41:08
3
楼 得分:
10
我的解题思路是:
1. 根据中人数计算出需用教室数
2. 将所有 >=30 的单位中人数提出,放入空闲教室,减去 30,循环直至单位人数 < 30
3. 将剩下的按 [单位,人数] 重新排列,人数多的排在前
4. 取 [首记录人数]+[其它记录人数] 与 30 最接近者;有空闲教室则放入其中,否则取所有教室空位数与提取的人数最接近者放入
5. 循环 3,4 步直至所有单位剩余人数为 0
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cqnucsmoon
等级:
发表于:
2008-05-18 09:29:32
4
楼 得分:
0
谢谢 dkfdtf :
我会先自己做一遍,不明白的时候再来请教。
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
abc推荐给好友