更具體地說,我想制作一個錦標賽演算法,將每一輪的所有參與者與另一對配對,而不是每一輪都有相同的對手。我希望這張圖能幫助你理解。
如果有什么不清楚的地方,我很樂意向您解釋這個問題。
此外,它不一定與我畫線的順序有關。但我認為那是我腦海中的系統方法。
uj5u.com熱心網友回復:
你想要一個回圈調度演算法。
長話短說,將所有參與者排成兩排,并在第一輪匹配同一列的參與者。然后保持一個玩家固定(通常是第一行的第一個),順時針旋轉所有其他玩家,然后再次匹配同一列的玩家,依此類推,直到所有回合都玩完。
uj5u.com熱心網友回復:
你可以使用圓圈法。在 Wikipedia 文章中,該示例將參與者 #1 保持在固定位置,但下面我將參與者從 0 開始編號(就像您所做的那樣)并保持最后一個固定,而其他人則旋轉:
function calcRound(n, round) {
return Array.from({length: n >> 1}, (_, i) =>
[(i round) % (n - 1), i ? (n - i - 1 round) % (n - 1) : n - 1]
)
}
const numParticipants = 8;
for (let round = 0; round < numParticipants - 1; round ) {
const pairs = calcRound(numParticipants, round);
console.log(JSON.stringify(pairs));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/508421.html
標籤:javascript 节点.js 反应 算法
上一篇:如何為類應用樣式
下一篇:查找陣列中的資料并將其映射在一起