V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sleepybear1113
V2EX  ›  算法

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

  •  
  •   sleepybear1113 · 107 天前 · 572 次点击
    这是一个创建于 107 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    1 条回复
    sleepybear1113
        1
    sleepybear1113  
    OP
       107 天前
    这个问题简化的应该是装箱问题了,估计就是往这方向去查资料
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3389 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 11:10 · PVG 19:10 · LAX 03:10 · JFK 06:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.