我试图找出最大的排列数,将32名学生分组为8张表,每个表4张(不重复)。到目前为止,这是我亲手想出来的,但我希望有更多的可能性(数字代表学生ID):
1 32 30 26
2 1 31 27
3 2 32 28
4 3 1 29
5 4 2 30
6 5 3 31
7 6 4 32
8 7 5 1
9 8 6 2
10 9 7 3
11 10 8 4
12 11 9 5
13 12 10 6
14 13 11 7
15 14 12 8
16 15 13 9
17 16 14 10
18 17 15 11
19 18 16 12
20 19 17 13
21 20 18 14
22 21 19 15
23 22 20 16
24 23 21 17
25 24 22 18
26 25 23 19
27 26 24 20
28 27 25 21
29 28 26 22
30 29 27 23
31 30 28 24
32 31 29 25编辑
学生们必须彼此区别对待。例如,请注意,第1行中的学生1永远不会再次遇到学生32、30或26。
我如何用Python解决这个问题呢?
发布于 2014-02-25 15:25:55
从显示列的方式来看,您要做的似乎是创建一个包含32个学生范围(1,33)的列表,然后您要移动该列表,以便得到第二个列表。
l1 = range(1, 33)
l2 = shift(l1, -1)
l3 = shift(l2, -2)
l4 = shift(l3, -4)
for i in range(0:len(l1)):
print l1[i], l2[i], l3[i], l4[i]请注意,shift可以通过多种方式定义,包括使用collections.deque旋转()方法或
def shift(l, n):
return l[n:] + l[:n]https://stackoverflow.com/questions/22017243
复制相似问题