请教应该去学习使用什么算法或者思路,在同一时间编排考试上

79 天前
 sleepybear1113

朋友来问我一个考试编排的问题,怎么才能替代手工,以最大的自动化来编排试场。我自己了解了一下需求,感觉手动处理起来不算难的问题(就是费时间),在程序上不知道怎么解(主要还是因为我自己算法题刷少了)。

详细问过需求,简化成如下的需求点:

  1. 所有考试都在同一时间,不需要考虑冲突问题。
  2. 有若干校区,每个校区最大的教室数量不定。不考虑远近与学生是否方便,只考虑编排方便。
  3. 有若干门课,每门课考试人数不定,可能是个位数,可能上百。
  4. 如果某些课考试人数较少,那么需要合并到一起混考。
  5. 若干教室,每个教室都有下面的属性:最大容纳人数、最大容纳混考课的数量。
  6. 同一门课只能放在同一个校区考试。

我自己先假设最普通的情况,一个教室最大 30 个人。有若干从 1-30 人的课。用最无脑的方法,就是人数 30 的课放到 30 人的教室排满。然后排 29 人数的配 1 个人的课,然后 28 的配 2 人,27 、26...依次。

然后不同的场次处理后,发现等到课的人数是 17 、18 的时候,可能自己独立成一个教室考试有点浪费。或者一堆 1 、2 、3 的挤在一个教室加起来不到七八个人。

发现这种无脑从大到小的编排方式不行,所以觉得可能要使用某种算法来解决这个问题了。但是奈何学艺不精,没有刷过多少算法题,不清楚有哪些算法可以使用在这个问题上的。希望大家能说下算法的名称或者搜索学习算法方向。如果可以的话或者有什么处理思路的话,能简要说说就更好了。

502 次点击
所在节点    算法
1 条回复
sleepybear1113
78 天前
这个问题简化的应该是装箱问题了,估计就是往这方向去查资料

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1071549

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX