日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单循环赛制

發布時間:2023/12/14 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单循环赛制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#!/usr/bin/python3
# 文件名: 單循環賽制
# 作者:巧若拙
# 時間:2019-01-23
'''
單循環賽制是一種較為公平合理的比賽制度,比賽過程中所有參賽隊伍均能相遇--次。
其秩序編排可采用“逆時針輪轉方法”:
數字1~ n依次作為隊伍編號,把編號按U型走向分成均等兩邊
(若n為奇數,則在末尾增加編號0,使總數為偶數),即可得到第一輪的比賽秩序,
例如,有7個隊參加比賽,比賽秩序編排如下所示:
第一輪 第二輪 第三輪 第四輪 第五輪 第六輪 第七輪
?1-0 ? ?1-7 ? ?1-6 ? ?1-5 ? ?1-4 ? ?1-3 ? ?1-2
?2-7 ? ?0-6 ? ?7-5 ? ?6-4 ? ?5-3 ? ?4-2 ? ?3-0
?3-6 ? ?2-5 ? ?0-4 ? ?7-3 ? ?6-2 ? ?5-0 ? ?4-7
?4-5 ? ?3-4 ? ?2-3 ? ?0-2 ? ?7-0 ? ?6-7 ? ?5-6
第二輪,固定編號1,其余編號均按逆時針方向移動-一個位置,即為該輪比賽秩序;
以后各輪比賽秩序以此類推,與編號0對陣的表示本輪輪空。
'''
def fun1(n):
? ? t = list(range(1,n+1))
? ? if n % 2 == 1:
? ? ? ? t.append(0)
? ? ? ? n += 1
? ? for i in range(1, n):
? ? ? ? print(f'{i}:', end=" ")
? ? ? ? for j in range(n//2):
? ? ? ? ? ? print(f'{t[j]}-{t[n-1-j]}', end=" ")
? ? ? ? print()
? ? ? ? temp = t[n-1]
? ? ? ? for j in range(n-1, 1, -1):
? ? ? ? ? ? t[j] = t[j-1]
? ? ? ? t[1] = temp

'''
從1985年起,世界性比賽多采用"貝格""編排法。
其優點是單數隊參加時可避免第二輪的輪空隊從第四輪起每場都與前一輪的輪空隊比賽的不合理現象。
采用"貝格爾"編排法,編排時如果參賽隊為雙數時,
把參賽隊數分一半(參賽隊為單數時,最后以"0"表示形成雙數),
前一半由1號開始,自上而下寫在左邊;后一半的數自下而上寫在右邊,
然后用橫線把相對的號數連接起來。
這即是第一輪的比賽。
第二輪將第一輪右上角的編號("0"或最大的一個代號數)移到左角上,
三輪又移到右角上,以此類推。
即單數輪次時"0"或最大的一個代號在右上角,雙數輪次時則在左上角。
如下表示:
7 個隊比賽的編排方法
第一輪 第二輪 第三輪 第四輪 第五輪 第六輪 第七輪
? 1-0 ? 0-5 ? ?2-0 ? ?0-6 ? ?3-0 ? ?0-7 ? ?4-0
? 2-7 ? 6-4 ? ?3-1 ? ?7-5 ? ?4-2 ? ?1-6 ? ?5-3
? 3-6 ? 7-3 ? ?4-7 ? ?1-4 ? ?5-1 ? ?2-5 ? ?6-2
? 4-5 ? 1-2 ? ?5-6 ? ?2-3 ? ?6-7 ? ?3-4 ? ?7-1
無論比賽隊是單數還是雙數,最后一輪時,
必定是"0"或最大的一個代號在右上角,"1"在右下角。
'''
def fun2(n):
? ? t = list(range(1,n+1))
? ? if n % 2 == 1:
? ? ? ? t.append(0)
? ? ? ? n += 1
? ? for i in range(1, n):
? ? ? ? if i % 2 == 1:
? ? ? ? ? ? low, high = 1, n - 1
? ? ? ? else:
? ? ? ? ? ? low, high = 0, n - 2
? ? ? ? print(f'{i}:', end=" ")
? ? ? ? for j in range(n//2):
? ? ? ? ? ? print(f'{t[j]}-{t[n-1-j]}', end=" ")
? ? ? ? print()
? ? ? ? #將右上角的編號移到左角上,其他元素逆時針移動n//2-1次
? ? ? ? t[0], t[n-1] = t[n-1], t[0]
? ? ? ? for k in range(1, n//2):
? ? ? ? ? ? temp = t[high]
? ? ? ? ? ? for j in range(high, low, -1):
? ? ? ? ? ? ? ? t[j] = t[j-1]
? ? ? ? ? ? t[low] = temp
? ? ? ??
fun1(7)
fun2(7)

總結

以上是生活随笔為你收集整理的单循环赛制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。