学生在餐桌上排列

2024-04-19 11:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找出最大的排列数,可以将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解决这个问题?你知道吗


Tags: id编辑代表数字可能性学生区别
1条回答
网友
1楼 · 发布于 2024-04-19 11:28:29

从您显示列的方式来看,您要做的似乎是创建一个包含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,包括使用收藏.dequerotate()方法或

def shift(l, n):
  return l[n:] + l[:n]

相关问题 更多 >