首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >就位学生

就位学生
EN

Stack Overflow用户
提问于 2014-02-25 14:32:39
回答 1查看 58关注 0票数 0

我试图找出最大的排列数,将32名学生分组为8张表,每个表4张(不重复)。到目前为止,这是我亲手想出来的,但我希望有更多的可能性(数字代表学生ID):

代码语言:javascript
复制
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解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-25 15:25:55

从显示列的方式来看,您要做的似乎是创建一个包含32个学生范围(1,33)的列表,然后您要移动该列表,以便得到第二个列表。

代码语言:javascript
复制
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旋转()方法或

代码语言:javascript
复制
def shift(l, n):
  return l[n:] + l[:n]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22017243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档