我正在尝试提出一种算法,将用户“Q”、“W”、“E”和“R”分配到不同的队列位置(列“A”、“B”、“C” , "D") 在任务的每次迭代之后。我试图手动解决这个问题(使用不同的组合)但不能,所以我显然有一个概念问题(或者在我的限制条件下不可能有理想的解决方案)。任何帮助/提示表示赞赏。如果您对代码有任何建议,请随意使用任何语言。
谢谢!
我有一些限制:
- 用户(Q、W、E、R)在每次迭代中都换类。
- “D”列中的用户不能放在下一个“A”列中 迭代。
- 用户“E”不能放在“A”列中。
用户“Q”、“W”和“R”的分布应尽可能均等 在所有列中(这意味着,例如,用户“Q”不应该在 任何一列的次数明显多于用户“W” 和“R”)。
A B C D 1 2 3 4 5 6 7 8 9 10
最佳答案
经过反复试验,我认为这行得通吗?
A B C D
1 Q W R E
2 R Q E W
3 Q E W R
4 W R Q E
5 Q W E R
6 W E R Q
7 R Q W E
8 W R E Q
9 R E Q W
10 Q W R E (repeats from 1 on)
我首先创建了三行旋转 Q、W 和 R。
QWR
WRQ
RQW
然后将这三行放在彼此下面三层,在 D 列中插入一次 E,在 C 列中插入一次,在 B 列中插入一次。
QWRE
WRQE
RQWE
QWER
WREQ
RQEW
QEWR
WERQ
REQW
然后最后手动打乱这九行,直到满足前两个要求。
关于algorithm - 用户放置轮换算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29083397/