|
a=[[0 for col in range(9)] for row in range(9)] #创建二维列表
def gamecal(k,n): #处理编号k开始的n个球队
if n==2:
a[k][1]=k #参赛球队编号
a[k][2]=k+1 #对阵球队编号
a[k+1][1]=k+1 #参赛球队编号
a[k+1][2]=k #对阵球队编号
else:
gamecal(k,n//2)
gamecal(k+n//2,n//2)
for i in range(k,k+n//2):
for j in range(n//2+1,n+1):
a[j]=a[i+n//2][j-n//2]
for i in range(k+n//2,k+n):
for j in range(n//2+1,n+1):
a[j]=a[i-n//2][j-n//2]
j=2
m=int(input('参赛球队数:'))
for i in range(2,9):
j=j*2
if j==m :
break
if i>=8:
print('参赛对数必须为2的整数次幂,并且不超过64')
gamecal(1,m)
print('编号',end=' ')
for i in range(2,m+1):
if i==m:
print('%2d天' %(i-1))
else:
print('%2d天' %(i-1),end=' ')
for i in range(1,m+1):
for j in range(1,m+1):
if j==m:
print('%4d' %a[j],end=' ')
else:
print('%4d' %a[j],end=' ')
print(end='\n')
参赛球队数:8
编号 1天 2天 3天 4天 5天 6天 7天
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1 |
|
|