循环日程表

 

 

 用分治的思想实现:

data=[]
def copy(data,n,x1,y1,x2,y2):
    for i in range(n):
        for j in range(n):
            data[x2+i][y2+j]=data[x1+i][y1+j]

def creat_table(data,n,i,j):
    if(n==2):
        data[i][j]=i+1
        data[i][j+1]=i+2
        data[i+1][j]=i+2
        data[i+1][j+1]=i+1
    else:
        m=int(n/2)
        creat_table(data,m,i,j)
        creat_table(data,m,i+m,j)
        copy(data,m,i,j,i+m,j+m)
        copy(data,m,i+m,j,i,j+m)

def main():
    data=[]
    n=int(input("输入:"))
    #print("初始化数组")
    for i in range(n):
        d=[]
        for j in range(n):
            d.append(0)
        data.append(d)
    creat_table(data,n,0,0)
    print("最终日程表")
    for i in range(n):
        for j in range(n):
            print(data[i][j],end=' ')
        print()
if __name__ == '__main__':
    main()

输入8生成的表格结果是:

 

输入16生成的表格结果是:

 

 

生成的日程表表格data[n][m]表示的意思是ID为n的选手在第m天与ID为data[n][m比赛

posted @ 2020-10-24 10:20  sphoia  阅读(171)  评论(0)    收藏  举报