我正在尝试制定一个教学时间表,其中一位老师有一定数量的学生每周单独教授一次(例如音乐课)。学生必须轮换,即不能每周在同一时间上课(同一时间课程之间允许的最小间隔,我称之为“轮换期”)。想出最简单的形式是微不足道的:
Week 1 Week 2 Week 3 Week 4 Week 5 Week 6
10.00 Alice Edgar David Charles Bertha Alice
10.30 Bertha Alice Edgar David Charles Bertha
11.00 Charles Bertha Alice Edgar David Charles
11.30 David Charles Bertha Alice Edgar David
12.00 Edgar David Charles Bertha Alice Edgar
但我希望用户能够添加规则,例如 Alice 不能在第 3 周完成 10.30 或 11.00 等。我从一个简单的回溯循环开始,但很快意识到可能性的数量使这不可行。我不是一个很有经验的程序员,我是否意识到这可能会引导我进入高级编程技术。但如果有人能给我一些关于如何解决这个问题的想法,我将非常感激。我当然四处寻求帮助,但大多数讨论似乎是针对更复杂的任务,即生成整个学校的时间表。基因编程是否值得研究?我正在使用 php 将程序构建为网页。