用户放置旋转算法

时间:2015-03-16 17:37:38

标签: algorithm

我正在尝试提出一种算法,将用户“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
    

1 个答案:

答案 0 :(得分:2)

经过一些反复试验,我认为这有效吗?

        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列插入一次,在C列插入一次,在B列插入一次。

QWRE
WRQE
RQWE

QWER
WREQ
RQEW

QEWR
WERQ
REQW

然后最后手动洗牌那九行,直到满足前两个要求。