錦標賽支架
回答
幾年前,我做了這樣的事情。這是一段時間以前,我不知道我會以同樣的方式做它(它不真正擴展到雙重消除或類似的)如何輸出它可能是一個不同的問題。我使用了2002年至2003年的表格。今天肯定有更好的技術。
只要玩家是您在上面指定的數字之一,比賽的回合數量就是log2(玩家)+ 1。使用這些信息,你可以計算出有多少回合。最後一輪包含最後的勝利者。
我存儲在播放器的信息是這樣的(tweek這個最佳實踐)
Tournament
Name
Size
Players
Tournament
Name
Position (0 to tournament.size - 1)
Rounds
Tournament
Round
Position (max halves for each round)
Winner (player position)
注意,在我的下面的查詢,我不包括「錦標賽= [賽事]」,以確定比賽。他們都需要它。
用一個查詢來查詢並根據需要將其拆分爲不同的回合相當簡單。你可以做這樣的事情來得到下一個對手(假設有一個)。對於第1輪,你只需要根據獲得下/上一個球員,如果是偶數或奇數:
SELECT * FROM Players WHERE Position = PlayerPosition + 1
SELECT * FROM Players WHERE Position = PlayerPosition - 1
下一輪,如果用戶的最後Round.Position甚至,你會需要讓下一個位置有一個贏家: SELECT Player FROM Rounds WHERE Position = [playerRoundPosition] - 1
如果不是,下一個玩家沒有決定,或者有差距(不允許差距!)
如果用戶上一輪。位置很奇怪,你需要確保有下面這些用戶,並且有下面這些贏家,否則,他們會自動提升爲下一輪(因爲沒有人玩)
SELECT COUNT(*) FROM Players WHERE Position > [Player.Position]
SELECT Player FROM Rounds WHERE Position = [playerRoundPosition] + 1
在最後一點,我敢肯定,你可以使用類似下面的使用類似,以減少你寫的查詢:
SELECT Player FROM Rounds WHERE Position + Position % 2 = [playerRoundPosition]
SELECT Player FROM Rounds WHERE Position - Position % 2 = [playerRoundPosition]
更新:
縱觀我原來的職位,我發現,回合桌有點模糊。實際上,它應該被命名爲匹配。一場比賽是兩名獲勝者之間的比賽。最終的表應該看起來更像這個(只更改了名稱): 匹配 錦標賽 回合 位置(最大半每輪) 得主(玩家位置)
希望這使得它更有點清楚。當兩名球員相互對抗(在比賽中)時,您將該信息存儲在該匹配表中。這個特定的實現取決於比賽的位置,以瞭解哪些球員參與。
我開始將輪次編號爲1,因爲在我的實現中這更清晰。如果你願意,你可以選擇0(或者甚至做一些完全不同的事情,比如後退字詞)。
第一輪比賽1意味着參與者1和參與者2。在比賽2中,參賽選手3-4。基本上第一輪僅僅是球員的位置和位置+1參與。如果您需要更多訪問權限,您還可以將這些信息存儲在回合表中。每次我在節目中使用這些數據時,我都需要所有的回合和玩家信息。
第一輪之後,你看看最後一輪的比賽。在第2輪比賽1中,比賽1和2的獲勝者參加比賽。第2輪比賽第2場,第3場和第4場比賽的獲勝者參加比賽。它應該看起來很熟悉,除了它在第一輪之後使用匹配表。我確信有一個更有效的方法來完成這個重複任務,我從來沒有足夠的時間來重構那些代碼(它被重構了,不是那個許多)。
使用數組並從主數組中刪除丟失的團隊。 (但要保存在單獨的數組上,以供參考和重用)。
- 1. 錦標賽支架算法
- 2. 雙面錦標賽支架
- 3. JQuery支架插件渲染多個錦標賽支架
- 4. 錦標賽樹
- 5. 錦標賽選擇
- 6. 代碼拉力錦標賽
- 7. 錦標賽圖形問題
- 8. 羅賓錦標賽C#
- 9. Graph Theory - 錦標賽排名
- 10. 錦標賽括號算法
- 11. 錦標賽生成器PHP
- 12. 排序錦標賽種子
- 13. small-bet nextpeer:只允許一個錦標賽+更新錦標賽名稱
- 14. 分段錯誤:在模擬錦標賽分支預測器時
- 15. 那裏有任何錦標賽API嗎?
- 16. 錦標賽調度算法起點
- 17. 受限制的錦標賽選擇
- 18. 選擇錦標賽選擇的父母
- 19. 微博和歐洲錦標賽
- 20. DDD建模錦標賽播放
- 21. 遺傳算法錦標賽選擇
- 22. php中的錦標賽算法
- 23. 在MongoDB中建模錦標賽括號
- 24. 錦標賽得分的模式幫助
- 25. 錦標賽括號 - 線和空間
- 26. 繪製錦標賽括號(PHP&GD)
- 27. 爲錦標賽優化括號
- 28. 二進制錦標賽選擇
- 29. 錦標賽括號的遞歸算法
- 30. 錦標賽選擇的一般算法
這是一個相當普遍的問題。也許你可以分享你的一些想法,並詢問關於特定領域的更具體的問題? – Amber 2010-04-28 22:56:10
你只是想創建圖形,或者只是訂購一個列表來處理這個,或者是什麼?請更具體一些,__更具體一些.__ – 2010-04-28 22:56:22
如果您有31名選手而不是32名選手,您想做什麼? – 2010-04-28 23:00:41