请教个关于排班的问题,能不能用程序算出最优的方案。

2016 年 8 月 23 日
 jiduxiyanghong
有 ABCD4 个人

需求如下:

每天 2 个人上班,做一休一,比如 1 号 A 和 B 上班, 2 号 C 和 D , 3 号又是 A 和 B ,就这么轮换下去。

如何调整让人员能互相搭配上班,例如需要 A 分别和 B 、 C 、 D 都能搭到班。

我目前弄出来的办法是周末其中一天是一个人上班,然后实现 B 、 D 两个人调换,然后在下一周末同样的方式使 A 、 C 互换:

周五 A 、 B
周六 C 、 D
周日 A ( B 休)
周一 C 、 B (D 休)
周二 A 、 D


但是这种方式不管怎么换还是不能让 A 和 C 、 B 和 D 在一个班


如何有更好的方案?周末两天可以一个人的情况下。
2983 次点击
所在节点    问与答
11 条回复
loading
2016 年 8 月 23 日
循环嵌套
jiduxiyanghong
2016 年 8 月 23 日
@loading 关键是我不会啊。。 我不是干这个的
kindjeff
2016 年 8 月 23 日
AB AC AD BC BD CD
tabris17
2016 年 8 月 23 日
组合数学的问题,和会不会写程序没什么关系
yjzll
2016 年 8 月 23 日
哈哈,其实是数学问题,数学搞清楚了,编程核心内容也就一天
jiduxiyanghong
2016 年 8 月 23 日
@kindjeff 这种方式不行, A 上了一天第二天必须休息,忘记说了,休息也不能安排太多的。,除了做一休一之外最多只能一个人另外安排 2 天
prefere
2016 年 8 月 23 日
1 ab
2 cd
...
5 ab
6 c
7 d

1 ac
2 db
...
5 ac
6 d
7 b

1 ad
2 bc
...
5 ad
6 b
7 c

1 ab
2 cd
...
Arnie97
2016 年 8 月 24 日
我感觉 Prolog 这门语言简直就是专门解决这种问题的
blackboar
2016 年 8 月 24 日
@prefere 最多的一个当月会另外休 5 天啊,一个 4 天,两个 3 天
prefere
2016 年 8 月 24 日
能不能连着上两天啊,不连着貌似没结果啊。
[['a', 'c'], ['b', 'c'], ['b', 'd'], ['a', 'c'], ['c', 'd'], ['a'], ['c'], ['a', 'b'], ['b', 'd'], ['a', 'c'], ['a', 'd'], ['b', 'c'], ['b'], ['d'], ['a', 'd'], ['a', 'b'], ['b', 'c'], ['a', 'd'], ['b', 'c'], ['a'], ['c'], ['a', 'd'], ['b', 'd'], ['a', 'b'], ['a', 'c'], ['c', 'd'], ['b'], ['d'], ['c', 'd'], ['a', 'b'], ['c', 'd'], ['b', 'd']]
jiduxiyanghong
2016 年 8 月 25 日
@prefere 那我在琢磨琢磨吧,其实就是开会下边同事提出来的一个小问题,说是一直这么上班就见不到其他同事,后来想想也有道理的。

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

https://v2ex.ih06.com/t/301213

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

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

© 2021 V2EX