我正在創建一個錦標賽括號創建腳本,並且我遇到了錦標賽的玩家數量非2的功率。例如,它目前對於2,4,8, 16,32,...等等,但是對於3,5,6,7 ...我很難過!錦標賽括號的遞歸算法
這是我到目前爲止有:
$numrows = 8; // Currently for Testing.
draw_bracket($numrows);
function draw_bracket($numplayers)
{
draw_series_container();
draw_bracket_layer($numplayers, 0);
draw_series_container_end();
}
/* RECURSION, YO! */
function draw_bracket_layer($numplayers, $layer)
{
$levels = floor(log($numplayers, 2));
if ($layer == $levels - 1)
{
draw_player_box();
draw_player_box();
}
else
{
draw_series_container();
draw_bracket_layer($numplayers, $layer + 1);
draw_series_container_end();
draw_series_container();
draw_bracket_layer($numplayers, $layer + 1);
draw_series_container_end();
}
}
我假設我們需要更多的「基地的情況下」。或者也許更多,如果這些情況下的聲明。
函數draw_series_container()和draw_player_box只是填充了HTML代碼。如果需要,我可以給他們看。
有人可以用5或6人的支架開始我嗎?
謝謝!
請解釋一下這個公式:'$ =水平地板(日誌($ numplayers,2));' - 你真的是'自然logarithm'?爲什麼數量級取決於對數?看起來很奇怪。 – 2011-05-26 23:32:44
我從這裏得到:http://stackoverflow.com/questions/1294412/tournament-brackets-algorithm。我不完全確定它爲什麼工作...但測試多達32個顯示它。 :P – Peanut 2011-05-26 23:35:17