假设我们有以下三种:
1 9 2 13 3 10 4 15 五 11 6 14 7 12 8
元素在哪里(匹配): 1-8是圆的1 9-12是圆的2 13-14是第3轮 15轮4
我怎么能确定的在shuch树轮的元素N?
我目前的公式是:
total_rounds =地板(日志(totalTeams,2)); matches_per_round =(totalTeams / POW(2 current_round)) next_match_id =(totalTeams / 2)+ CEIL(match_id / 2) total_matches = total_teams - 1解决方案
想象一下,树也被列在相反的。
15 7 14 3 13 6 12 1 11 五 10 2 9 4 8在这种情况下,它会简单地将数的对数,四舍五入。现在,我们只需要减去此数轮数,我们就大功告成了。
reverse_number = total_matches - match_number + 1; reverse_match_round =地板(日志(reverse_number,2)); match_round = total_rounds - match_round;
(注意, reverse_match_round 实际上是0索引,不像match_round。但是,由于我们从 total_rounds 减去它,它更容易保持这种方式比1索引它。如果你preFER这1索引,只需添加 +1 到每个最后两行。)
Assume we have following tree:
1 9 2 13 3 10 4 15 5 11 6 14 7 12 8Where elements(matches): 1-8 is round 1 9-12 is round 2 13-14 is round 3 15 is round 4
How I can determinate round of element "n" in shuch tree?
My current formulas are:
total_rounds = floor(log(totalTeams,2)); matches_per_round = (totalTeams / pow(2, current_round)) next_match_id = (totalTeams/2) + ceil(match_id/2) total_matches = total_teams - 1解决方案
Imagine the tree was numbered in reverse.
15 7 14 3 13 6 12 1 11 5 10 2 9 4 8In that case, it'd simply be the logarithm of the number, rounded down. Now we simply subtract this number from the number of rounds, and we're done.
reverse_number = total_matches - match_number + 1; reverse_match_round = floor(log(reverse_number, 2)); match_round = total_rounds - match_round;(Note, reverse_match_round is actually 0-indexed, unlike match_round. However, since we subtract it from total_rounds, it's easier to keep it that way than to 1-index it. If you prefer it 1-indexed, simply add +1 to each of the last two lines.)
更多推荐
如何确定的一轮元素树(比赛括号内)?
发布评论